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

来源:互联网 发布:影视会员源码 编辑:程序博客网 时间:2024/06/08 15:56

修改状态栏颜色很容易,在相关页面的主题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方法



0 0
原创粉丝点击