小编Art*_*tem的帖子

使用导航组件为每个片段自定义工具栏

我将导航组件与单个活动一起使用。为每个片段创建自定义工具栏的想法。例如,一个工具栏必须是黄色的,另一个工具栏必须是带有菜单图标的紫色,另一个是透明的。另外,如果可能的话,我想通过setupActionBarWithNavController(navController)在 MainActivity 中保存导航和工具栏之间的连接来实现它。我尝试(activity as? AppCompatActivity)?.setSupportActionBar(toolbar)在 Fragment 中使用此方法,但它重复了工具栏。

这是我的主题

<style name="Theme.Movies" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
Run Code Online (Sandbox Code Playgroud)

这是MainActivity布局中的工具栏

 <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/purple_700"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:layout_constraintTop_toTopOf="parent" />
Run Code Online (Sandbox Code Playgroud)

这是MainActivity

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController

    override fun …
Run Code Online (Sandbox Code Playgroud)

android android-fragments kotlin android-toolbar android-architecture-navigation

2
推荐指数
1
解决办法
5056
查看次数