Android透明狀態欄

透明狀態欄效果只支持4.4及以后的系統

  1. 在Activity的onCreate方法中調用下面語句,支持透明狀態欄。
    getWindow().getAttributes().flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    等同于在values-19文件下申明的主題中增加
    <item name="android:windowTranslucentStatus">true</item>
    通過以上步驟,狀態欄背景已經變成透明了,并且Activity的布局內容會顯示在狀態欄下面。

  2. 將內容移到狀態欄以下

  • 利用狀態欄的高度
    在Activity布局文件的根節點上添加paddingTop,大小為狀態欄高度。
    具體做法,在values目錄下創建一個root_padding_top(變量名,名字根據需求取)變量,值為0dp;在values-19下創建同樣一個變量,值為25dp
    為什么是25dp,可以查看源代碼,也可以使用以下代碼獲取狀態欄高度(標注:我在自己的vivo x6s上獲取的高度為69px,轉換成dp為23)
    public int getStatusBarHeight() {
        int result = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }
  • 使用android:fitsSystemWindows="true"
    在Activity布局文件的根結點上添加上述語句即可使內容顯示在狀態欄以下。

完成上面兩部之后,內容基本顯示正常,但是在4.4上,狀態欄的背景顏色是半透明帶灰色的,在5.0上是程序的主題色,所以5.0的效果看起來是可以,應該是5.0有所優化。

  1. 解決4.4灰色背景
    。。。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容