如何使用 CollapsingLayout with Navigation Advanced Example

How to use with CollapsingLayout with Navigation Advanced Example

我正在尝试将折叠布局与 Navigation Advanced example

集成

我尝试了什么?

向main_actvity.xml添加了折叠栏布局

<com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.appbar.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"/>

    </com.google.android.material.appbar.CollapsingToolbarLayout>

</com.google.android.material.appbar.AppBarLayout>

已在 MainActivity.kt

中修改 setupBottomNavigationBar()
private fun setupBottomNavigationBar(){

...
controller.observe(this, Observer { navController ->

            mainBinding.collapsingToolbarLayout.setupWithNavController(mainBinding.toolbar, navController)
            //setupActionBarWithNavController(navController)
        })
...
}

当前问题:

现在我有两个 ActionBar,而不是一个。顶部的标题为应用程序名称,下面的一个最初不显示任何内容,但是当导航到子目标时仅显示灰色后退箭头,操作栏上未显示目标标签

任何理解这个多重后台栈实现的人,请帮助我使用 CollapsingToolbarLayout

更新:

按照@Manoj 在评论中的建议删除了一个操作栏,现在需要修复操作栏中不显示标题的问题

更新 2:

虽然在导航到子目的地时不显示目的地标签(标题),但显示后退按钮。

我终于弄清楚为什么工具栏标题没有显示,原因是我没有为应用栏布局设置足够的高度,我使用的是 wrap_content 所以折叠的工具栏布局覆盖了工具栏标题。解决方案是将应用栏布局高度设置为大于 64dp 的值。当我增加 appbar 布局高度时,它看起来异常高。 (请原谅我对折叠工具栏的工作原理缺乏了解)

但这不是我的本意,我想为某些特定片段启用折叠工具栏,我使用的是导航架构组件推荐的单个 activity 概念。

正如我在以下答案中所读的那样

  1. Having two toolbars and making one transparent when doing fragment transactions.
  2. Having separate toolbar for each fragment

恕我直言,如果您使用的是导航架构组件,那么这两个都不是好的解决方案,如果您需要手动管理片段事务或工具栏,则使用导航架构组件没有任何价值。

所以现在我已经停止使用折叠工具栏了。

如果不显示标题(并且增加应用栏布局高度"works"),只需将collapsingToolbarLayout 的isTitleEnabled 设置为false。 它应该可以解决问题