當 Activity 以全屏模式運行時,如何允許 Android 系統狀態欄在頂層出現,而不迫使 Activity 重新布局讓出空間?
01-13
隱藏狀態欄通過簡單的設置就可以了,我想問的是如何在全屏的 Activity 中展示狀態欄。我期望的展示效果是狀態欄覆蓋 Activity 的界面而不是重排。
private void hideStatusBar() {
WindowManager.LayoutParams attrs = getWindow().getAttributes();attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs); }private void showStatusBar() {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags = ~WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); }關鍵是,在做了該Activity的全屏設置的前提下,還要在onCreate()方法中加入如下語句:getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);此方案我已經試過了,可行,且不會導致Activity重排。
此方案是我Google搜索出來的,網址如下:Hacking Android: Show/hide status bar in fullscreen application感謝他!
可以參考這篇文章: Android沉浸式模式的實現
//默認全屏顯示getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
//不全屏顯示
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);//全屏顯示 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);View view = findViewById(R.id.view);view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);setSystemUiVisibility()的api level為11View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN的api level為16如果主題里有ActionBar那麼在setContentView()之前調用getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);會比較好
推薦閱讀:
※Android開發中在哪些場合下會需要使用AIDL?
※怎樣才能獲得編程開發的樂趣?
※怎樣著手研究 Android 源代碼?
※安卓培訓公司黑馬程序員怎麼樣?有必要參加安卓培訓嗎?可以自學嗎?
※為什麼 Android 系統那麼多 ROM,這是必然的嗎,有必要嗎?
TAG:Android開發 |