在我的设备上,我可以通过以下操作成功隐藏状态栏:
在清单中添加以下内容:
<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),结果如下:
如您所见,状态栏和操作栏被隐藏。但是,如果我在Huawei P20 Lite上运行它,这就是我得到的结果:
顶部有一个黑色的栏,状态栏将位于该栏。
有人可以向我解释为什么会这样吗?
答案 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);
}
}