Android全屏&去标题栏的坑
2019-03-26 本文已影响0人
Killshadow
0x01 最有效的方式
网上有三种方式, 先介绍我的方式, 在style.xml
中的AppTheme
设置如下:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<!-- 注意上面的NoActionBar -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- 如果加了上面的NoActionBar則windowNoTitle默認為true -->
<item name="android:windowNoTitle">true</item>
<!-- 如果想全屏, 可添加windowFullscreen -->
<item name="android:windowFullscreen">true</item>
</style>
在AndroidManifest.xml
中设置主题为AppTheme
:
<application
...
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
...
<activity android:name=".view.activity.RecordDetailActivity">
</activity>
</application>
其实上面这种方式就是网上所说的第3种方式, 只不过一开始添加了<item name="android:windowNoTitle">true</item>
之后还是很纳闷去不了标题栏, 后来发现是因为parent="Theme.AppCompat.Light.DarkActionBar"
.
0x02 其他方式
1. 方法一
在activity
或fragment
中添加如下语句, 这种情况适合对单个activity
去状态栏/去标题栏.
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //全屏显示(去掉状态栏)
2. 方法二
用View
的setSystemUiVisibility()
方法:引自
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。
View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏