【问题标题】:How to hide actionbar in some fragments with Android Navigation Components?如何使用 Android 导航组件在某些片段中隐藏操作栏?
【发布时间】:2020-08-03 00:24:03
【问题描述】:

我正在使用 android 导航组件来导航片段。 我可以通过在 Main Activity 中使用此代码轻松设置操作栏:

    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

但是,如果我想在某些片段中隐藏 supportActionbar,那么最好的方法应该是什么?

【问题讨论】:

    标签: java android android-fragments android-architecture-navigation android-navigation


    【解决方案1】:

    对于要隐藏SupportActionBar的片段,可以在onResume().hide()隐藏,在onStop().show()再次显示

    @Override
    public void onResume() {
        super.onResume();
        ActionBar supportActionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar();
        if (supportActionBar != null)
            supportActionBar.hide();
    }
    
    @Override
    public void onStop() {
        super.onStop();
        ActionBar supportActionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar();
        if (supportActionBar != null)
            supportActionBar.show();
    }
    

    【讨论】:

    • 它正在工作,但是当您来到要隐藏操作栏的片段时,它会显示操作栏一段时间并使用默认动画隐藏它
    • @tahanaqvi 欢迎.. 动画问题;您可以使用 supportActionBar.setShowHideAnimationEnabled(false); 禁用它
    • 还有一个问题,当你隐藏操作栏时,最小化应用程序并返回.. 屏幕底部的空白区域会显示操作栏的高度
    • @tahanaqvi 你能用图片来说明更多吗?我无法在我的测试应用程序中重现这个问题
    • 注意这一点,在某些情况下,下一个 Fragment 的 onStart 可以在前一个 Fragment 的 onStop 之前调用,这样当你不想要一个 ActionBar 时就会留下一个 ActionBar
    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 2017-08-24
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多