Android - 为带有导航抽屉和应用栏的应用完全隐藏状态和导航栏

tm1*_*701 5 android-layout android-actionbar android-fullscreen android-statusbar android-navigation-bar

如何动态隐藏状态和导航栏彻底

该应用程序包含一个带有应用栏/工具栏和 FAB 按钮的常规导航抽屉。

当切换到全屏模式,在内容的导航和状态栏的滚动了。屏幕上留下两个空条。我想要隐藏那些空条。

我创建了一个最小的演示应用程序。左侧是常规应用程序。当推动晶圆厂时,应用程序应该全屏显示。

在此处输入图片说明

我怎样才能让酒吧隐藏?

问题:请写出最小演示项目中需要哪些更改?

更新了第二个解决方案

@Roaim 提供的 GREAT 解决方案有效。必要的是将android:fitsSystemWindows布局属性设置为 false。

如果您仍然无法显示和隐藏状态/导航栏,此解决方案可能会对您有所帮助。

完全隐藏条形:

public static void hideSystemUI() {
    if (getSupportActionBar() != null) {
        getSupportActionBar().hide();
    }
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    | 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);
}
Run Code Online (Sandbox Code Playgroud)

并显示所有条:

public static void showSystemUI() {
    if (getSupportActionBar() != null) {
        getSupportActionBar().show();
    }
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)

Roa*_*aim 12

更新

问题出在您的布局文件上。我刚刚开始android:fitsSystemWindows=false解决这个问题。我向您的存储库提出了拉取请求,我认为这解决了您的问题。

在此输入图像描述


您应该遵循以下官方文档:


在 Android 4.0 及更低版本上隐藏状态栏

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar.
        if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        setContentView(R.layout.activity_main);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

在 Android 4.1 及更高版本上隐藏状态栏

    View decorView = getWindow().getDecorView();
    // Hide the status bar.
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
    // Remember that you should never show the action bar if the
    // status bar is hidden, so hide that too if necessary.
    ActionBar actionBar = getActionBar();
    actionBar.hide();
Run Code Online (Sandbox Code Playgroud)

隐藏导航栏

    View decorView = getWindow().getDecorView();
    // Hide both the navigation bar and the status bar.
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
    // a general rule, you should design your app to hide the status bar whenever you
    // hide the navigation bar.
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                  | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
Run Code Online (Sandbox Code Playgroud)

  • 伟大的 !!!非常感谢!我授予了解决+向上+赏金。恭喜。 (2认同)

归档时间:

查看次数:

4783 次

最近记录:

5 年,4 月 前