设置状态栏颜色的方法是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);
}
}
SystemBarTintManager 是一个开源项目方法,地址是:https://github.com/jgilfelt/SystemBarTint
第2,3种方法
需要在布局文件中加入下面两个属性:
android:clipToPadding=”true”
android:fitsSystemWindows=”true”
android:clipToPadding 定义布局间是否有间距
android:fitsSystemWindows 这个属性,主要是通过调整当前设置这个属性的view的padding去为我们的status_bar留下空间。
如果你不写,那么状态栏就会出现颜色重叠。
注意:以上几种方法布局必须设置了颜色或者背景,否则状态栏将会显示默认的灰白色。
如果设置的是透明效果颜色的话,状态栏底层也会显示一层灰白色,会与设置的背景进行叠加。
以上就是设置状态栏颜色的几种方法,可以根据需要进行选择。