如何使用 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>
中修改 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 概念。
正如我在以下答案中所读的那样
- Having two toolbars and making one transparent when doing fragment transactions.
- Having separate toolbar for each fragment
恕我直言,如果您使用的是导航架构组件,那么这两个都不是好的解决方案,如果您需要手动管理片段事务或工具栏,则使用导航架构组件没有任何价值。
所以现在我已经停止使用折叠工具栏了。
如果不显示标题(并且增加应用栏布局高度"works"),只需将collapsingToolbarLayout 的isTitleEnabled 设置为false。
它应该可以解决问题
我正在尝试将折叠布局与 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>
中修改 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 概念。
正如我在以下答案中所读的那样
- Having two toolbars and making one transparent when doing fragment transactions.
- Having separate toolbar for each fragment
恕我直言,如果您使用的是导航架构组件,那么这两个都不是好的解决方案,如果您需要手动管理片段事务或工具栏,则使用导航架构组件没有任何价值。
所以现在我已经停止使用折叠工具栏了。
如果不显示标题(并且增加应用栏布局高度"works"),只需将collapsingToolbarLayout 的isTitleEnabled 设置为false。 它应该可以解决问题