android 工具栏-添加向上按钮

xhv8bpkk  于 2022-11-27  发布在  Android
关注(0)|答案(9)|浏览(251)

我尝试使用工具栏而不是操作栏,但我不知道如何添加向上按钮以返回到上一个活动。我找不到任何与之相关的方法。
如何添加向上按钮?

hfyxw5xn

hfyxw5xn1#

我猜你要找的是这样的东西:

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

或者在片段中使用的情况下:

Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail);
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

这将显示你的操作栏在你的工具栏里面,但不要担心一切都将适合在一起。最后你要做的,如果你不想任何阴影下你的操作栏或它的任何背景是改变你的主题在vaules/styles.xml。

<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar">
liwlm1x9

liwlm1x92#

如果您想在XML中执行此操作,可以使用...

<android.support.v7.widget.Toolbar
            app:navigationIcon="?homeAsUpIndicator"
            ...
2ledvvac

2ledvvac3#

如果你想知道为什么点击向上按钮不能处理片段,你需要设置一个导航监听器,不知道为什么Google没有默认启用它:

protected fun setupToolbar(toolbar: Toolbar) {
    (activity as AppCompatActivity).run {
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        toolbar.setNavigationOnClickListener { onBackPressed() }
    }
}
pcrecxhr

pcrecxhr4#

如果上一个Activity对于给定Activity总是相同的,则可以在parentActivityName属性的帮助下实现向上/返回按钮。可以在AndroidManifest.xml文件中提及,如下所示:

<activity android:name=".DetailActivity" android:parentActivityName=".MainActivity">
     <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
</activity>

假设DetailActivity是从MainActivity打开的。因此,当您打开DetailActivity时,工具栏将自动显示一个向左箭头(请参阅屏幕截图):

当我们点击左箭头时,将显示MainActivity

wkyowqbh

wkyowqbh5#

我想调用getSupportActionBar().setHomeButtonEnabled(true);应该还是可以的,只要你已经调用了setSupportActionBar(toolbar);

iyr7buue

iyr7buue6#

您可以在工具栏中添加自己的“向上”按钮,毕竟它只是一个ViewGroup。
您可以在您的toolbar.xml中,或在您的布局中定义android.support.v7.widget.Toolbar的任何地方,根据需要自定义工具栏添加您的“向上”按钮,如下所示:

<android.support.v7.widget.Toolbar
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/toolbar"
   android:minHeight="?attr/actionBarSize"
   android:layout_height="?attr/actionBarSize"
   android:background="@drawable/color_toolbar"
   android:layout_width="match_parent">

   <ImageButton
       android:id="@+id/upButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:onClick="uphandler"
       android:src="@drawable/backbutton"
       android:layout_gravity="end"/>

</android.support.v7.widget.Toolbar>

现在,在Activity中定义一个handler函数来监听这个up按钮:

public void uphandler(View v){
       this.finish();    // This will kill current activity, and if previous activity is still opened in background, it will come in front.
}
4jb9z9bj

4jb9z9bj7#

您必须将这些行添加回自动按钮显示

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

在“返回”上,单击按钮将自动返回到活动

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
wvyml7n5

wvyml7n58#

如果你使用的是导航组件,那么在片段中添加向上按钮就像这样:
在您的fragment.xml中

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".presentation.recipeitem.RecipeDetailsFragment">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_constraintTop_toTopOf="parent"
        android:elevation="4dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        />
.
.

那么在你的片段中你会这样做
在onViewCreated(..)内部

val navController = findNavController()
val appBarConfiguration = AppBarConfiguration(navController.graph)
viewBinding.toolbar.setupWithNavController(navController, appBarConfiguration)

如果您需要添加标题,请在onResume中使用

viewBinding.toolbar.title = "my title"
mu0hgdu0

mu0hgdu09#

如果您使用的是较新版本的android studio:
第一个声明工具栏的androidx不是android

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorAccent"
        app:popupTheme="@style/Theme.Sunshine.PopupOverlay" />

第二,获取对www.example.com中工具栏的引用Activity.java,并使用以下代码;

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    ActionBar ab= getSupportActionBar();
    ab.setDisplayHomeAsUpEnabled(true);

相关问题