首页 > 解决方案 > 使用带有 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 导航时,我们可以做些什么来避免在操作栏中显示向上按钮?

标签: android-support-libraryandroid-navigationandroid-jetpack

解决方案


从 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)

这是处理顶部导航行为的正确方法。


推荐阅读