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

android开发 修改状态栏背景颜色和字体颜色(工作日记)

2016-01-14 16:05 881 查看
修改状态栏颜色很容易,在相关页面的主题style里,设置<item name = "android:colorPrimaryDark">@color/statusbar_background_color_dark</item>

或者andorid:statusBarColor

(借用看到的图)


-----------------------------------------------------------------------

然后尝试修改状态栏的字体,在样式里,尝试了好几种都没有用。

最后在Activity中,利用反射机制,修改了状态栏颜色。因为是公司的项目,在底层已经有人做过调整了,可能不适用于任何情况,仅提供一种思路。

首先,明确修改页面的Activity,在onCreat()方法里,加上自定义的方法setStatusBarIconDark(true);下面是具体的setStatusBarIconDark方法:

private void setStatusBarIconDark(boolean dark){
try{
Object win = getWindow();
Class<?> cls = win.getClass();
Method method = cls.getDeclaredMethod("setStatusBarIconDark",boolean.class);
method.invoke(win,dark);
} catch(Exception e){
Log.v("ff","statusBarIconDark,e="+e);
}
}

找到framework里的setStatusBarIconDark方法进行修改。我是将字体改为深色样式。
看一下反射机制中的问题:

Method getMethod(String name, Class[] params)    根据方法名和参数,返回一个具体的具有public属性的方法,包括从父类继承的public方法和实现接口的public方法

Method[] getMethods()    返回所有具有public属性的方法数组      Method[] getDeclaredMethods()
   返回该类中的所有的方法数组

Method getDeclaredMethod(String name, Class[] params)    根据方法名和参数,返回一个具体的方法(不分public和非public属性),不包括从父类继承的方法

最后,抛出反射invoke方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 工作