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方法
或者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方法
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories