沉浸式適配

從Android 4.4 KitKat開始,系統(tǒng)已經(jīng)支持狀態(tài)欄設(shè)置沉浸式,設(shè)置的方式有兩種:

一種是直接在主題里設(shè)置:

<itemname="android:windowTranslucentStatus">true</item>?

另外一種是在代碼里設(shè)置:window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

5.0以后增加了設(shè)置狀態(tài)欄的顏色

<item name="android:statusBarColor">@android:color/transparent</item>

有時(shí)候我們需要顯示圖片,這時(shí)候需要把狀態(tài)欄設(shè)置為透明,當(dāng)我們?cè)O(shè)置了透明以后,會(huì)發(fā)現(xiàn)狀態(tài)欄顏色并沒(méi)有顯示透明,我們需要對(duì)他進(jìn)行適配

window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

window.setStatusBarColor(Color.TRANSPARENT);

int visiblity = window.getDecorView().getSystemUiVisibility();

//布局內(nèi)容全屏展示

visiblity |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;

//防止內(nèi)容區(qū)域發(fā)生大小變化

visiblity |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

window.getDecorView().setSystemUiVisibility(visiblity);

這樣就可以顯示沉浸式了,當(dāng)然,如果我們的布局里面有toolbar的時(shí)候,會(huì)出現(xiàn)高度的問(wèn)題,我們需要對(duì)toolbar進(jìn)行布局上的調(diào)整。

首先,我們需要獲取到狀態(tài)欄的高度

public int getStatusBarHeight(Context context){

? ? ? int resId = context.getResources().getIdentifier("status_bar_height",

? ? ? ? "dimen","android");

? ? ? if (resId >0){

? ? ? return context.getResources().getDimensionPixelSize(resId);

? ? }

return 0;

}

然后,給我們的toolbar設(shè)置margin以及padding值

public void setHeightAndPadding(Context context,View view){

? ? ? ?ViewGroup.LayoutParams layoutParams = view.getLayoutParams();

? ? ? ?layoutParams.height += getStatusBarHeight(context);

? ? ? ?view.setPadding(view.getPaddingLeft(),

? ? ? ? ? ? ? ?view.getPaddingTop()+getStatusBarHeight(context),

? ? ? ? ? ? ? ?view.getPaddingRight(),view.getPaddingBottom());

}

這樣我們就完美的解決沉浸式的適配問(wèn)題了。

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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