首页 > 解决方案 > 无法在某些设备上隐藏状态栏

问题描述

在我的设备上,我可以通过执行以下操作成功隐藏状态栏:

在我的清单中,我添加了以下内容:

<activity
    android:name=".SomeActivity"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>

然后以我的风格:

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

在我的设备(运行 Android 9 的三星 J7 Pro)上,结果如下:

隐

如您所见,状态栏和操作栏是隐藏的。但是如果我在华为 P20 Lite 上运行它,我得到的结果是:

不隐藏

顶部有一个黑色条,状态栏所在的位置。

为什么会这样?

标签: javaandroid

解决方案


创建一个与文件values-v28夹平行的values文件夹。

复制新styles.xml文件中的主题内容并添加 <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>

此外,在 Activity 类中添加以下内容

 public class MyActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.my_activity);
        }
 }

推荐阅读