如何在工具栏左侧添加按钮?
How do I add a button to the left side of the toolbar?
我有两个片段。当我从第一个片段切换到第二个片段时,工具栏上会显示一个后退箭头。如何使主屏幕上没有空白而不是后退箭头,但还有另一个按钮?
工具栏:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:minHeight="64dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
两个屏幕:
我通过添加自己的按钮解决了这个问题。
<ImageButton
android:id="@+id/button_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/actionBarItemBackground"
app:srcCompat="@drawable/ic_settings" />
请注意,通过指定 android:background="?attr/actionBarItemBackground"
,您可以获得与常规工具栏按钮相同的点击效果。
如果您想在某些屏幕上隐藏按钮,请将 addOnDestinationChangedListener 添加到 NavController:
navController.addOnDestinationChangedListener { _, destination, _ ->
binding.buttonSettings.visibility =
if (destination.id == R.id.account_add_fragment) View.GONE else View.VISIBLE
}
我有两个片段。当我从第一个片段切换到第二个片段时,工具栏上会显示一个后退箭头。如何使主屏幕上没有空白而不是后退箭头,但还有另一个按钮?
工具栏:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:minHeight="64dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
两个屏幕:
我通过添加自己的按钮解决了这个问题。
<ImageButton
android:id="@+id/button_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/actionBarItemBackground"
app:srcCompat="@drawable/ic_settings" />
请注意,通过指定 android:background="?attr/actionBarItemBackground"
,您可以获得与常规工具栏按钮相同的点击效果。
如果您想在某些屏幕上隐藏按钮,请将 addOnDestinationChangedListener 添加到 NavController:
navController.addOnDestinationChangedListener { _, destination, _ ->
binding.buttonSettings.visibility =
if (destination.id == R.id.account_add_fragment) View.GONE else View.VISIBLE
}