1. 程式人生 > >Android 4.4及以後將內容佈局延伸到狀態列

Android 4.4及以後將內容佈局延伸到狀態列

該篇部落格的主要目的就是為了將圖片顯示在狀態列上,讓APP看起來更有型!如下圖所示:示例

這個介面的佈局就是coordinatorLayout + CollapsingToolbarLayout實現的效果,將背景圖片顯示在狀態列上是不是顯得更有逼格呢!至少博主看到還是覺得不錯的,雖然第三方沉浸式狀態列的框架也能實現,但個人覺得還是有必要將這篇文章寫下來(PS:博主用第三代的沉浸式框架實現好像主要用於修改狀態列的顏色,至於圖片就沒有做過了)。

其實,實現這種效果的原理還是透明狀態列,
透明狀態列

話不多說——show me the code。

一般情況下,需要建立vaules、values-v19以及values-v21三個資料夾,裡面存放著三個版本下的styles檔案,在19和21的主題檔案下加上上面的item即可,同時切記Activity中的佈局中不需要 新增android:fitsSystemWindows=”true”,不然不能實現效果。

最後21檔案下需要新增statusBarColor為透明顏色的item,
這裡寫圖片描述

設定好以上步驟之後你可以直接執行專案,會發現以下的情況:

哈哈,哈哈。。。。 這是為什麼呢?就是前面說的android:fitsSystemWindows=”true”的問題,沒在根區域性加就會出現這樣的問題,BUT,加上又不能實現效果,這該如何是好呢?

其實,加上android:fitsSystemWindows=”true”這句話之後佈局檔案就會自動在狀態列下開始佈局,而不加這句並且在4.4以後加上透明狀態列之後你的activity的佈局就會從整個手機螢幕頂端開始佈局,而不是從狀態列之後。所以,加上透明狀態列之後說明你的佈局被上移了,然後就需要手動來測量狀態列的高度,並且給toolBar(我這裡的佈局,你的佈局不確定哦)設定margin了。
設定margin

同時,需要知道透明狀態列是4.4之後才能設定的,小於4.4的手機是不識別的,顧它還是直接從狀態列以後開始佈局的,所以必須判斷手機的版本,不然的話小於4.4的手機會出現對頂部有一個margin,這是我們不願意看到的。

最後就實現了這種效果了—— 將佈局中的圖片延伸到狀態列,實現高逼格應用!

該篇部落格只是突然的想法隨筆,如有錯誤,請指出,謝謝!不明白的可以交流。。。