怎样使用 Theme.MaterialComponents 隐藏状态栏和导航栏

6

我有一个问题,想要在应用程序中隐藏状态栏和导航栏。

假设:

  • 使用库com.google.android.material:material:1.1.0-alpha10
  • 使用样式Theme.MaterialComponents.Light.NoActionBar

解决方案类似于

window.apply {
      clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
       addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
        } else {
            decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        }
        statusBarColor = Color.TRANSPARENT
}

不能正常工作

1个回答

4
  1. 在styles.xml中创建新的主题:
 <style name="AppTheme.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="android:windowBackground">@color/white</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="windowNoTitle">true</item>
</style>

将此主题应用于清单文件中的特定活动(activity)。
<activity
    android:name=".SearchActivity"
    android:label="Text"
    android:theme="@style/AppTheme.NoActionBar" />

1
状态栏和导航栏不是操作栏。 - Tim
1
我的假设是使用样式Theme.MaterialComponents.Light.NoActionBar。 - Skalaw
@Skalaw,已添加父级。 - Webfreak
2
"<item name="android:windowFullscreen">true</item>" 是我需要的。谢谢@Webfreak! - Robin Hood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接