gpt4 book ai didi

android - 无法从 fragment 中隐藏导航栏

转载 作者:行者123 更新时间:2023-11-29 16:39:18 25 4
gpt4 key购买 nike

我目前有一个带有 FragmentStatePagerAdapter 的 ViewPager。这里的问题是每当我点击一个按钮时都会出现一个导航栏,所以我开始使用以下代码手动隐藏它:

getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

此代码 fragment 在 Activity 中运行良好,但在 fragment 中不执行任何操作。对于所有类似的 stackoverflow 答案,他们建议添加 getActivty() 如下所示:

getActivity().getWindow().getDecorView()………..

但由于某些原因它仍然没有隐藏导航栏

最佳答案

这几天没解决这个问题,我终于决定回去看看android documentation .所以我通过在 Activity 的窗口焦点改变时启用粘性沉浸模式来解决这个问题,如下所示:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// I removed the below condition check because I still want to hide System UI even if activity
// loses focus. Such cases include spinner dropdown list is open, dialog box is displayed, etc.
// if(hasFocus)
hideSystemUI();
}

private void hideSystemUI() {
// Enables sticky immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE_STICKY.
// Or for "regular immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}

// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

注意:我启用粘性沉浸模式而不是常规沉浸模式的原因是,在常规沉浸模式下,当用户从下到上打手势时,非半透明导航栏将永久显示。但是在粘性沉浸模式下,会暂时显示一个半透明的导航栏。

更新:我忘了将此链接到问题。由于即使焦点更改是由 fragment 任务引起的 onWindowFocusChanged(boolean hasFocus) 也会被触发,因此无需从 fragment 内部隐藏系统 UI。

关于android - 无法从 fragment 中隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51662323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com