android沉浸式狀態欄的問題解決

**簡要:**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等標題欄問題的解決,如果是普通頁面沒有涉及到導航欄什麼的可以不用此方法。

源碼下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章