android-support-library - 使用带有 Android 导航 UI 库的 BottomNavigationView 进行导航时从操作栏中删除向上按钮
问题描述
我创建了一个小应用程序,其中包含三个片段,用于通过 BottomNavigationView 进行顶级导航。如果您启动应用程序并单击底部导航上的导航按钮,您会在操作栏中看到一个向上按钮。这是活动的代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
setSupportActionBar(toolbar)
val navController = navHostFragment.findNavController()
setupActionBarWithNavController(this, navController)
setupWithNavController(bottomNav, navController)
}
override fun onSupportNavigateUp(): Boolean
= findNavController(navHostFragment).navigateUp()
}
这是结果的屏幕截图。该应用程序在主屏幕上启动,我所做的只是单击底部导航视图中的配置文件按钮。
我试过听 BottomNavigationView 的项目选择并使用不同的NavOptions手动导航无济于事。当用户使用 BottomNavigationView 导航时,我们可以做些什么来避免在操作栏中显示向上按钮?
解决方案
从 1.0.0-alpha07 开始,您可以使用它AppBarConfiguration
来配置该行为。
AppBarConfiguration
有一个 Builder 构造函数,因此您可以Builder
使用一组特定的顶级目的地创建一个新的,由它们引用id
(这id
是您在导航布局上设置的那个)。
新建AppBarConfiguration
:
val appBarConfiguration = AppBarConfiguration
.Builder(
R.id.navigationHomeFragment,
R.id.navigationListFragment,
R.id.navigationProfileFragment)
.build()
然后,而不是setupActionBarWithNavController(this, navController)
你需要打电话setupActionBarWithNavController(this, navController, appBarConfiguration)
这是处理顶部导航行为的正确方法。
推荐阅读
- python-3.7 - 用于在字符串中查找集合的 RE 模式
- swift - 为什么我没有成功以编程方式使用 segue?
- python - 评分为负时如何使用trueskill
- javascript - Ajax 不会从我的脚本中检索数据
- mysql - sequelize 有很多关联更新
- python - 如何将netcdf文件中的二维纬度和经度数组转换为普通的一维数组?
- python - Pandas - 根据数据框中的 .loc 值,用单个值填充新列
- node.js - 无法读取未定义的属性“名称”:我如何使用 res.locals.users 将用户对象呈现给 ejs 视图
- python - 找不到 [WinError 2] AudioSegment.from_mp3 找不到文件的解决方案
- c++ - Windows 多线程强制线程优先级