Android之设置状态栏颜色

来源:互联网 发布:沉戟酥油饼txt知乎 编辑:程序博客网 时间:2024/05/16 01:25

本方法可解决问题:在4.40和5.0以上的状态栏设置颜色问题

不用在乎系统版本,就是这么牛逼。

工具类:

public class StatusBarCompat {    /**     * Set system status bar color.     * @param activity     * @param color status bar color     * @param lightStatusBar if the status bar color is light. Only effective when API >= 23     */    public static void setStatusBarColor(Activity activity, int color, boolean lightStatusBar) {        Window window = activity.getWindow();        if ((window.getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) > 0) {            return;        }        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            StatusBarCompatM.setStatusBarColor(window, color, lightStatusBar);//        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//            该方法无效,暂时屏蔽,采用以下方式来设置系统状态栏//            StatusBarCompatLollipop.setStatusBarColor(window, color, lightStatusBar);        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            StatusBarCompatKitkat.setStatusBarColor(window, color, lightStatusBar);        }    }    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)    public static void setFitsSystemWindows(Window window, boolean fitSystemWindows) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {            ViewGroup mContentView = (ViewGroup) window.findViewById(Window.ID_ANDROID_CONTENT);            View mChildView = mContentView.getChildAt(0);            if (mChildView != null) {                //注意不是设置 ContentView  FitsSystemWindows, 而是设置 ContentView 的第一个子 View . 预留出系统 View 的空间.                mChildView.setFitsSystemWindows(fitSystemWindows);            }        }    }}
在Ma。java中实现

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    StatusBarCompat.setStatusBarColor(this, Color.parseColor("#303135"), true);    setContentView(R.layout.activity_main);}
搞定。就是这么简单。

0 0