android开发

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. 方法一

activityfragment中添加如下语句, 这种情况适合对单个activity去状态栏/去标题栏.

requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //全屏显示(去掉状态栏)

2. 方法二

ViewsetSystemUiVisibility()方法:引自

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模式),状态栏上一些图标显示会被隐藏
上一篇 下一篇

猜你喜欢

热点阅读