google的api demos,代碼
https://github.com/android/platform_development/blob/master/samples/ApiDemos/src/com/example/android/apis/view/SystemUIModes.java#L321
一、全屏,不顯示狀態欄
- 方法一,在manifest文件中
<activity
android:name="com.ysj.demo.MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 方法二,在代碼中設置
注意在setContentView之前調用
// 隱藏標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 隱藏狀態欄
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
在activity的布局文件的根節點設置android:fitsSystemWindows="true",是為系統的view留出空間,狀態欄會在activity布局上方(相當于順序排列),設置為false,狀態欄會覆蓋在activity上(相當于頂部對齊)。
設置FLAG_FULLSCREEN,就是設置不顯示狀態欄,如果顯示,根據fitsSystemWindows設置顯示位置。
二、動態顯示和隱藏狀態欄
//顯示系統狀態欄
private void showStatusBar() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//隱藏狀態欄的布局
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//內容布局填滿屏幕
);
}
//隱藏系統狀態欄
private void hideStatusBar() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//隱藏狀態欄的布局
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//內容布局填滿屏幕
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION//隱藏狀態欄
| View.SYSTEM_UI_FLAG_FULLSCREEN//內容全屏展示
| View.SYSTEM_UI_FLAG_IMMERSIVE
);
}
三、狀態欄透明
API 19 添加的FLAG_TRANSLUCENT_STATUS
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
四、設置狀態欄顏色
API 21 添加的方法
window.setStatusBarColor(int color);