1. 程式人生 > >android設定狀態列顏色(沉浸式狀態列)

android設定狀態列顏色(沉浸式狀態列)

設定狀態列顏色的方法是andorid4.4以後支援的,最少要api19以上才可以使用喲。
方法如下:

第一種↓

        public static void setStatusBarTranslucent(ViewGroup vg, Activity activity) {
        // 如果版本在4.4以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // 狀態列高度
            int height = getStatusBarHeight(activity);
            if
(height <= 0) { return; } // 設定距離頂部狀態列垂直距離 vg.setPadding(0, height, 0, 0); // 狀態列透明 activity.ge tWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 導航欄透明 // activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
} } public static int getStatusBarHeight(Activity activity) { int height = 0; int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { height = activity.getResources().getDimensionPixelSize(resourceId); } return
height; }

第二種↓

private static void setStatusBarTranslucent(ViewGroup vg, Activity activity, int color) {
         // 如果版本在4.4以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // 狀態列高度
            int height = getStatusBarHeight(activity);
            if (height <= 0) {
                return;
            }
            View statusBarView = new View(activity);  
            ViewGroup.LayoutParams lp = new 
                    ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,  
                    getStatusBarHeight(activity));  
            statusBarView.setBackgroundColor(color);  
            // 給佈局新增一個狀態列高度,自定義顏色的View
            vg.addView(statusBarView, lp);  
            // 狀態列透明
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        } 
    }

第三種↓

public static void setStatusBarTranslucent(Activity activity,int color) {
        // 如果版本在4.4以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // 狀態列透明
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

            SystemBarTintManager tintManager = new SystemBarTintManager(activity);
            tintManager.setStatusBarTintEnabled(true);
            tintManager.setStatusBarTintResource(color);
        }
     }

第2,3種方法
需要在佈局檔案中加入下面兩個屬性:

android:clipToPadding=”true”
android:fitsSystemWindows=”true”

android:clipToPadding 定義佈局間是否有間距
android:fitsSystemWindows 這個屬性,主要是通過調整當前設定這個屬性的view的padding去為我們的status_bar留下空間。

如果你不寫,那麼狀態列就會出現顏色重疊。

注意:以上幾種方法佈局必須設定了顏色或者背景,否則狀態列將會顯示預設的灰白色。
如果設定的是透明效果顏色的話,狀態列底層也會顯示一層灰白色,會與設定的背景進行疊加。

以上就是設定狀態列顏色的幾種方法,可以根據需要進行選擇。