Android System UI 屬性

Android System UI 屬性

關(guān)于操作SystemUI,包括:StatusBar、ActionBar、NavigationBar

通過(guò)View Mode and Layout

可以通過(guò)View的一些常量來(lái)改變狀態(tài)欄或者屏幕的一些特性(View.setSystemUiVisibility(UiOptions)(API 11)),具體如下(隱藏系統(tǒng)欄和低能模式會(huì)在有app bar時(shí)失效):

View.setSystemUiVisibility(int visibility)中,visibility是Mode與Layout任意取值的組合,可傳入的實(shí)參為:

SystemUiVisibility Mode

  • SYSTEM_UI_FLAG_VISIBLE 0

    請(qǐng)求顯示系統(tǒng)UI,默認(rèn)狀態(tài)

  • SYSTEM_UI_FLAG_LOW_PROFILE 0x00000001

    低能模式,狀態(tài)欄上的一些圖標(biāo)會(huì)被隱藏,游戲、閱讀、視頻播放等沉浸式應(yīng)用會(huì)需要

  • SYSTEM_UI_FLAG_HIDE_NAVIGATION 0x00000002

    請(qǐng)求隱藏底部導(dǎo)航欄

  • SYSTEM_UI_FLAG_FULLSCREEN 0x00000004

    請(qǐng)求全屏顯示,狀態(tài)欄會(huì)被隱藏,底部導(dǎo)航欄不會(huì)被隱藏,效果和WindowManager.LayoutParams.FLAG_FULLSCREEN相同

  • SYSTEM_UI_FLAG_IMMERSIVE 0x00000800

    這個(gè)flag只有當(dāng)設(shè)置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。如果沒(méi)有設(shè)置這個(gè)flag,任意的View相互動(dòng)作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果設(shè)置就不會(huì)退出

  • SYSTEM_UI_FLAG_IMMERSIVE_STICKY 0x00001000

    這個(gè)flag只有當(dāng)設(shè)置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 時(shí)才起作用。如果沒(méi)有設(shè)置這個(gè)flag,任意的View相互動(dòng)作都?jí)耐顺?code>SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果設(shè)置就不受影響

  • SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 0x00002000

    狀態(tài)欄淺色背景模式,文字為黑色,Android 6.0以前(api < 23)不支持

SystemUiVisibility Layout

  • SYSTEM_UI_FLAG_LAYOUT_STABLE 0x00000100

    請(qǐng)求系統(tǒng)UI布局穩(wěn)定狀態(tài)

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 0x00000400

    讓View全屏顯示,Layout會(huì)被拉伸到StatusBar下面,不包含NavigationBar

  • SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 0x00000200

    讓View全屏顯示,Layout會(huì)被拉伸到NavigationBar下面

通過(guò)Window flag 和 Theme(通過(guò)設(shè)置Widnow flag修改屬性)

  • WindowManager.LayoutParams.FLAG_FULLSCREEN:隱藏狀態(tài)欄全屏顯示W(wǎng)indow并且會(huì)拉伸。可以通過(guò)theme中的android.R.attr#windowFullscreen來(lái)控制。

  • WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN:允許window contents擴(kuò)展到屏幕中的縮放區(qū)域內(nèi),如果有縮放區(qū)域的話。 可以通過(guò)theme中的android.R.attr#windowOverscan來(lái)控制。

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS:使?fàn)顟B(tài)欄透明同時(shí)會(huì)拉伸window到全屏的狀態(tài)(保留NavigationBar高度),假如有ActionBar,ActionBar依舊會(huì)顯示??梢酝ㄟ^(guò)theme中的android.R.attr#windowTranslucentStatus來(lái)控制。

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION:NavigationBar透明同時(shí)會(huì)拉伸Window到全屏(不保留StatusBar和NavigationBar的高度)??梢酝ㄟ^(guò)theme中的android.R.attr#windowTranslucentNavigation來(lái)控制。

Window Feature

通過(guò)requestFeature來(lái)設(shè)置Window相關(guān)的顯示狀態(tài)。

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

常見(jiàn)Flag:

Window.FEATURE_ACTION_BAR_OVERLAY:請(qǐng)求ActionBar覆蓋在window content上面。
Window.FEATURE_NO_TITLE:去除屏幕頂部的標(biāo)題欄

參考:

http://blog.csdn.net/siobhan/article/details/51018382

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容