Android 工具栏-添加向上按钮
我尝试使用工具栏而不是ActionBar,但我不知道如何添加up按钮以返回到上一个活动。 我找不到任何与之相关的方法Android 工具栏-添加向上按钮,android,toolbar,Android,Toolbar,我尝试使用工具栏而不是ActionBar,但我不知道如何添加up按钮以返回到上一个活动。 我找不到任何与之相关的方法 如何添加向上按钮?调用getSupportActionBar()。setHomeButtonEnabled(true)仍然可以工作我想你要找的是这样的东西: Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail); setSupportActionBar(toolbar); getSupportActionBar
如何添加向上按钮?调用
getSupportActionBar()。setHomeButtonEnabled(true)我认为,只要您已经调用了setSupportActionBar(工具栏),代码>仍然可以工作代码>我想你要找的是这样的东西:
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">
您可以在工具栏中添加自己的“向上”按钮,毕竟它只是一个视图组
您可以在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>
如果要在XML中执行此操作,可以使用
<android.support.v7.widget.Toolbar
app:navigationIcon="?homeAsUpIndicator"
...
如果某个活动的上一个活动始终相同,则可以在parentActivityName
属性的帮助下实现“向上/返回”按钮。它可以在AndroidManifest.xml
文件中提到,如下所示:
<activity android:name=".DetailActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
当我们点击向左箭头时,就会显示MainActivity
。如果您想知道为什么点击向上按钮不能处理片段,您还需要设置一个导航侦听器,不确定谷歌默认情况下为什么没有启用它:
protected fun setupToolbar(toolbar: Toolbar) {
(activity as AppCompatActivity).run {
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
toolbar.setNavigationOnClickListener { onBackPressed() }
}
}
如果您使用的是导航组件,则片段中的“添加”按钮如下所示:
在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"
/>
.
.
如果您需要添加标题,请在onResume中使用此选项
viewBinding.toolbar.title = "my title"
您必须自动添加这些行后退按钮显示
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
在背面,按钮自动单击返回活动
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
使用this.finish()是一种反模式,因为“up”图标应该将用户带到应用程序中的分层父级,而不一定是他们看到的最后一个屏幕:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}