android变色状态栏

今天我们不谈周立波吸毒,不谈陈思成出轨,我们来谈谈android的变色状态栏,其实就是所谓的沉浸式状态栏或者透明状态栏(但我觉得变色状态栏这个说法更准确).
先来个具体使用场景,比如首页一个MainActivity,然后里面有四个Fragment,每个Fragment里的状态栏都不同

首先在android4.4以上才能做变色状态栏,在BaseActivity里的onCreate方法里直接加入这段代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
            WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
            localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
        }

加入代码后,此时四个Fragment的标题布局会直接延伸到状态栏,状态栏就相当于着色了,但是有一个问题,就是我们的顶部布局会叠加在状态栏上,这是我们所不希望的,所以可以在标题布局父布局处加一个android:paddingTop="25dp"属性,因为状态栏的高度就是25dp,所以会将状态栏顶上去而不会叠加到上面,代码如下

//标题父布局


        //标题
        
    

完美解决状态栏变色的问题。

你可能感兴趣的:(android变色状态栏)