**簡要:**android從4.4版本及以後加入了沉浸式狀態欄的設置,但是也有一些問題,特別是自定義的最上面導航欄時,會出現一些問題,我想就我遇到的問題給大家一些講解。
設置方法:
第一行代碼:透明狀態欄
第二行代碼:透明導航欄
注意,如果你設置了無導航欄,設置No Title,第二行代碼可以不寫
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
加上着兩行代碼後:就可以實現沉浸式狀態欄了,但是有一個問題,你自定義的導航欄一部分內容會被蓋住,想下圖這樣:
谷歌給提供了一種解決方法,就是在相應的activity xml文件中加入這兩行代碼:
android:fitsSystemWindows="true"
android:clipToPadding="true"
當你把這兩行屬性代碼加在activity根目錄時,效果卻變成這樣:
也就是狀態欄變成了那樣,並沒有解決此問題,怎麼辦呢,進行網上搜索,說是把那兩行代碼加到應用詳情那個textview上,試試看。但是如下圖
反而有點錯亂了。還是不行
最後經過網上搜索,找到了一個第三方的東西,可以很好解決這個問題,那就是systembartint-1.0.4.jar
加入這個jar包後,在Activity的onCreate方法里加入這幾行代碼:
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setNavigationBarTintEnabled(true);
tintManager.setTintColor(Color.parseColor("#03A9F4")); //把這個顏色設置成和導航欄一樣的顏色
效果圖
完美解決,當然這是針對自定義導航欄或者標題連而沒有用到系統的actionbar等標題欄問題的解決,如果是普通頁面沒有涉及到導航欄什麼的可以不用此方法。