@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
NavigationBarStatusBar(this,hasFocus);
}
/**
* 導航欄,狀態欄隱藏
* @param activity
*/
public void NavigationBarStatusBar(Activity activity, boolean hasFocus){
// if (hasFocus && Build.VERSION.SDK_INT >= 19) { //這個註釋的能用,但是在多個頁面需要隱藏導航欄時跳轉會導致導航欄彈出
// View decorView = activity.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_STICKY);
// }
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
flag |= 0x00001000;
View decorView = activity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
flag);
}
}
/**
*
* @param activity 此方法可以實現隱藏導航欄,但是一旦點擊屏幕,導航欄就會彈出,無法隱藏
* @param
*/
public void setNavigationBar(Activity activity,int visible){
View decorView = activity.getWindow().getDecorView();
//顯示NavigationBar
if (View.GONE == visible){
int option = SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(option);
}
}
這個方法時官方demo中給的,以前沒注意,用起來也沒有問題。比較簡潔,在適當方法中調用即可
view 可以用getWindow().getDecorView()替代
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);