Android 5.0 及以上實(shí)現(xiàn)方式(android在5.0之后引入Material Design 實(shí)現(xiàn)方式相對(duì)簡(jiǎn)單)
透明狀態(tài)欄履怯,背景浸入狀態(tài)欄
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
在布局文件中View 默認(rèn)fitsSystemWindows 值為 false 因此會(huì)看到整個(gè)布局是從最頂端開始的裆泳,如果布局頂端有TextView 會(huì)看到狀態(tài)欄覆蓋了TextView。這種情況下可以針對(duì)特定的布局設(shè)置
android:fitsSystemWindows="true"
哪個(gè)view設(shè)置了這個(gè)屬性為true晾虑,系統(tǒng)就會(huì)調(diào)整該view的padding值來(lái)留出空間給系統(tǒng)窗體。表現(xiàn)為糙捺,padding出status bar的高度給status bar使用笙隙,不至于我們定義layout跟status bar重疊!
著色狀態(tài)欄
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
// 有些情況下需要先清除透明flag
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.green));
}