如何解决在特定片段中隐藏工具栏在应用栏布局内
我正在使用 Navigation Component.
我在 Toolbar
中有 AppBarLayout
但我必须在特定片段中隐藏工具栏。为此,我使用了 Navigation 组件中的 onDestinationChanged
来监听路由和隐藏,但工具栏从不隐藏。
override fun onDestinationChanged(
controller: NavController,destination: NavDestination,arguments: Bundle?
) {
if (destination.id == R.id.helpFragment) {
Timber.e("App Bar Hide")
binding.appBarLayout.setExpanded(false,true) //This never hides toolbar
} else {
Timber.e("App Bar Show")
binding.appBarLayout.setExpanded(true,true)
}
}
这是我的布局
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/transparent"
app:elevation="0dp">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="@string/home" />
</com.google.android.material.appbar.AppBarLayout>
解决方法
val navHostFragment: NavHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController: NavController = navHostFragment.navController
val appBarConfiguration: AppBarConfiguration = AppBarConfiguration(navController.graph)
binding.toolbar.setupWithNavController(navController,appBarConfiguration)
setSupportActionBar(binding.toolbar)
navController.addOnDestinationChangedListener { _,destination,_ ->
when (destination.id) {
R.id.salesFragment -> {
supportActionBar?.hide() // to hide
} else -> {
supportActionBar?.show() // to show
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。