android - 隐藏子屏幕/片段的android底部导航视图
问题描述
我正在尝试创建一个单一活动的 Android 应用程序。我有带有 BottomNavigationView、三个顶级片段和一些子片段的 MainActivity(仅活动)。我的要求是每当屏幕显示顶级片段时,底部导航应该是可见的,以便可以进行切换。但是当我查看任何子片段时,应该隐藏底部导航。是否有使用 Navigation 组件的开箱即用方式或需要手动更改可见性?
解决方案
更新(导航组件 1.0)
从Navigation 组件 1.0.0-alpha08 开始,方法addOnNavigatedListener(controller: NavController, destination: NavDestination)
更改为addOnDestinationChangedListener(controller: NavController, destination: NavDestination, arguments: Bundle)
. 它的行为也略有改变(如果目标参数改变,它也会被调用)。
旧答案
您可以使用 NavController.OnNavigatedListener 来实现此行为(在 Activity onCreate 中设置):
findNavController(R.id.container).addOnNavigatedListener { _, destination ->
when (destination.id) {
R.id.dashboardFragment -> showBottomNavigation()
else -> hideBottomNavigation()
}
}
private fun hideBottomNavigation() {
// bottom_navigation is BottomNavigationView
with(bottom_navigation) {
if (visibility == View.VISIBLE && alpha == 1f) {
animate()
.alpha(0f)
.withEndAction { visibility = View.GONE }
.duration = EXIT_DURATION
}
}
}
private fun showBottomNavigation() {
// bottom_navigation is BottomNavigationView
with(bottom_navigation) {
visibility = View.VISIBLE
animate()
.alpha(1f)
.duration = ENTER_DURATION
}
}
推荐阅读
- javascript - XLSX 客户端从后端 api 响应中保存:二进制字符串、应用程序/八位字节流
- python-3.x - 用计数时间代替 t=0.000000
- python - 为什么安装python3会在mac上默认python(python 2.7)安装文件夹的位置创建一个快捷方式?
- mongodb - 从不同的组过滤器返回多个值 - Mongodb
- sdk - pragma solidity - jpmorganchase cakeshop 中的编译错误
- python - 来自 pd.read_html DF[0] 格式的列表数据帧的连接列表
- azure - 包含的用户权限
- python - 有没有更快的方法将熊猫数据帧处理成大型 csv?
- angular - 在 Angular 应用程序之间共享导航
- python - SMC-Python 添加和删除列入黑名单的 IP