固定状态栏和隐藏的导航栏

Pab*_* R. 5 android statusbar android-layout

是否可以隐藏导航栏而不隐藏状态栏?

我在我的样式的 xml 中试过这个

  <item name="android:windowFullscreen">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)

我在活动中像这样隐藏了导航栏

  val decorView = window.decorView
        val uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        decorView.systemUiVisibility = uiOptions
Run Code Online (Sandbox Code Playgroud)

谢谢!!

编辑:

   fun hideNavigationStatusBar(activity: Activity) {
        activity.window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
        val decorView = activity.window.decorView
        val uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        decorView.systemUiVisibility = uiOptions
    }

    fun translucidNavigationBar(activity: Activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            val w = activity.window
            w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
        }
    }
Run Code Online (Sandbox Code Playgroud)

我可以使用第一种方法隐藏状态和导航栏,并使用第二种方法通过半透明导航保持状态,但我仍然无法保持状态并完全隐藏导航栏。

ark*_*das 1

解决此问题的最简单方法分为两部分:删除导航栏,然后使状态栏透明。

1 - 删除导航栏

要删除导航栏,请在继承自 Theme.AppCompat.Light.NoActionBar 的 value 文件夹下的 styles.xml 文件中创建新样式。

https://i.stack.imgur.com/UdMLQ.png

然后在manifest.xml文件中将Activity的主题更改为您的自定义样式。

编辑清单

这样,导航栏将被删除,但状态栏仍将呈灰色。

2 - 使状态栏透明

您可以按照此教程使状态栏透明:透明状态栏

或者只需将以下内容添加到 Activity 的 onCreate 方法中:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有了这个,您可以期待类似于下图中的应用程序风格:

在此输入图像描述

3 - 完全删除状态栏

要完全隐藏状态栏,请在 onCreate 方法中添加以下内容:

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
Run Code Online (Sandbox Code Playgroud)

您可以在隐藏状态栏上阅读更多相关内容

结果:

在此输入图像描述

4 - 删除导航栏

您可以在 Android 开发者网站上找到解决方案隐藏导航栏

基本上只需将其添加到您的 onCreate 中:

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
Run Code Online (Sandbox Code Playgroud)