您的位置:首页 > 移动开发 > Android开发

Android给Activity状态栏设置自定义颜色

2017-09-11 19:28 330 查看
Android开发这么久了,肯定会遇到因为不同手机自带的app状态栏不一样的问题,刚好公司最近有一个需求就是把状态栏定义成相同的颜色,也符合Material Design风格,于是查看了google 的 Android SDK以及在前辈的博客帮助下,我找了相关代码。先测量出状态栏的高度:



然后通过高度给状态栏添加设置自定义颜色的布局:



下面就贴出我的代码:

              // 获取手机状态栏高度

public int getStatusBarHeight() {
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0, statusBarHeight = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
statusBarHeight = getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return statusBarHeight;
}

//设置自己需要的颜色
public void setTheme(String color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
View v = new View(this);
ViewGroup.LayoutParams lParams = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());
if (color == null) {
v.setBackgroundColor(ContextCompat.getColor(this, R.color.titlr_bg_color));
} else {
v.setBackgroundColor(Color.parseColor(color));
}
v.setLayoutParams(lParams);
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.addView(v);
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

}
}






方法中的形参则是你自己需求的颜色。完毕!run起来啊...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: