如何在android中隐藏系统导航栏

时间:2017-10-24 06:31:12

标签: android uinavigationbar navigationbar

我已经按照Android开发人员指南:如何隐藏系统导航栏。

.

它工作正常,直到我显示AlertDialog。 显示对话框时,导航栏(三个图标:方形,三角形和圆形)将显示在应用程序控件的顶部。

3 个答案:

答案 0 :(得分:1)

注意:当你显示任何AlertDialog时系统导航仍然会出现,但当你关闭它时,它会再次隐藏。如果您仍然不想要此行为,请使用“中心视图”创建类似于视图的警报。

您可以尝试以下我使用过的方法。

/**
     * Hide system NavigationBar and StatusBar
     */
    @TargetApi(Build.VERSION_CODES.KITKAT)
    public void hideNavigationBar()
    {
        final View decorView = getWindow().getDecorView();
        decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                Log.i("LOG","Menu Shown is this"+ visibility);
                decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);

            }
        });
    }

onResume的{​​{1}}调用上述方法,并确保在活动中覆盖以下方法。

Activity

在创建警报时,您应该使用以下方法隐藏导航。

@Override
    @TargetApi(Build.VERSION_CODES.KITKAT)
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus)
        {
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_IMMERSIVE
                            );
        }
    }

我在此SO

中找到了上述工作代码

答案 1 :(得分:0)

尝试查看there是官方文档

答案 2 :(得分:0)

使用这些方法来显示/隐藏systemUI

  public void hideUI() {
     decorView.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 // hide nav bar
        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
        | View.SYSTEM_UI_FLAG_IMMERSIVE);
  }


  public void showUI() {
      decorView.setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  }