无法在某些设备上隐藏状态栏

时间:2019-07-17 17:10:01

标签: java android

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

在清单中添加以下内容:

<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的Samsung J7 Pro),结果如下:

hidden

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

not hidden

顶部有一个黑色的栏,状态栏将位于该栏。


有人可以向我解释为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

请检查此链接making apps notch friendly。显然是因为设备有一个槽口。

答案 1 :(得分:1)

创建一个与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);
        }
 }