Android 顯示、隱藏狀態欄和導航欄

Android 顯示、隱藏狀態欄和導航欄

控制狀態欄顯示,Activity的主題中配置全屏屬性

<item name="android:windowFullscreen">true</item>
複製代碼

控制狀態欄顯示,在setContentView以前設置全屏的flag

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
複製代碼

控制狀態欄顯示,在任何位置經過添加和移除全屏的flag

// 隱藏狀態欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 顯示狀態欄
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
複製代碼

控制狀態欄和導航欄顯示,setSystemUiVisibility

View.SYSTEM_UI_FLAG_LAYOUT_STABLE:全屏顯示時保證尺寸不變。
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,狀態欄顯示在Activity頁面上面。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隱藏導航欄
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏顯示,且狀態欄被隱藏覆蓋掉。
View.SYSTEM_UI_FLAG_VISIBLE:Activity非全屏顯示,顯示狀態欄和導航欄。
View.INVISIBLE:Activity伸展全屏顯示,隱藏狀態欄。
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:必須配合View.SYSTEM_UI_FLAG_FULLSCREEN和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION組合使用,達到的效果是拉出狀態欄和導航欄後顯示一下子消失。

// 全屏展現
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // 全屏顯示,隱藏狀態欄和導航欄,拉出狀態欄和導航欄顯示一下子後消失。
        activity.getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    } else {
        // 全屏顯示,隱藏狀態欄
        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    }
}

// 非全屏顯示,顯示狀態欄和導航欄
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
複製代碼
相關文章
相關標籤/搜索