android开发,修改状态栏字体颜色?
113 阅读
0 评论
75 点赞
概述
原文链接:http://www.zhihu.com/question/31994153
作者:赵晨
链接:http://www.zhihu.com/question/31994153/answer/100408273
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
链接:http://www.zhihu.com/question/31994153/answer/100408273
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
题主说的是把状态栏文字和图标改成深色模式吧?如果是想改成其他自定义颜色暂时没有办法。
详细内容可以看我的这篇 白底黑字!Android浅色状态栏黑色字体模式
其实很多国内三方Android系统都有深色状态栏字体模式,但是目前只看到了小米和魅族公开了各自的实现方法,支持底层Android4.4以上的版本。而Android官方在6.0版本才有了深色状态栏字体API。
所以Android4.4以上系统版本可以修改状态栏颜色,但是只有小米的MIUI、魅族的Flyme和Android6.0以上系统可以把状态栏文字和图标换成深色。
Flyme深色状态栏字体模式如下:
<img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336093277378.png" data-rawwidth="436" data-rawheight="437" class="origin_image zh-lightbox-thumb" width="436" data-original="https://pic3.zhimg.com/02e6f990b02063021bea7cd0b6f53bbe_r.png">
MIUI深色状态栏字体模式如下:
<img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336098059405.png" data-rawwidth="433" data-rawheight="435" class="origin_image zh-lightbox-thumb" width="433" data-original="https://pic3.zhimg.com/7c7cc9c35b6a6a3473f87da739f5bf02_r.png">
官方在Android6.0中提供了亮色状态栏模式,配置很简单:
或者在style属性中加上
6.0中的效果如下
<img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336103793882.png" data-rawwidth="345" data-rawheight="349" class="content_image" width="345">
详细内容可以看我的这篇 白底黑字!Android浅色状态栏黑色字体模式
其实很多国内三方Android系统都有深色状态栏字体模式,但是目前只看到了小米和魅族公开了各自的实现方法,支持底层Android4.4以上的版本。而Android官方在6.0版本才有了深色状态栏字体API。
所以Android4.4以上系统版本可以修改状态栏颜色,但是只有小米的MIUI、魅族的Flyme和Android6.0以上系统可以把状态栏文字和图标换成深色。
/**
* 设置状态栏图标为深色和魅族特定的文字风格
* 可以用来判断是否为Flyme用户
* @param window 需要设置的窗口
* @param dark 是否把状态栏字体及图标颜色设置为深色
* @return boolean 成功执行返回true
*
*/
public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {
boolean result = false;
if (window != null) {
try {
WindowManager.LayoutParams lp = window.getAttributes();
Field darkFlag = WindowManager.LayoutParams.class
.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");
Field meizuFlags = WindowManager.LayoutParams.class
.getDeclaredField("meizuFlags");
darkFlag.setAccessible(true);
meizuFlags.setAccessible(true);
int bit = darkFlag.getInt(null);
int value = meizuFlags.getInt(lp);
if (dark) {
value |= bit;
} else {
value &= ~bit;
}
meizuFlags.setInt(lp, value);
window.setAttributes(lp);
result = true;
} catch (Exception e) {
}
}
return result;
}
Flyme深色状态栏字体模式如下:
<img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336093277378.png" data-rawwidth="436" data-rawheight="437" class="origin_image zh-lightbox-thumb" width="436" data-original="https://pic3.zhimg.com/02e6f990b02063021bea7cd0b6f53bbe_r.png">
/**
* 设置状态栏字体图标为深色,需要MIUIV6以上
* @param window 需要设置的窗口
* @param dark 是否把状态栏字体及图标颜色设置为深色
* @return boolean 成功执行返回true
*
*/
public static boolean MIUISetStatusBarLightMode(Window window, boolean dark) {
boolean result = false;
if (window != null) {
Class clazz = window.getClass();
try {
int darkModeFlag = 0;
Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
darkModeFlag = field.getInt(layoutParams);
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
if(dark){
extraFlagField.invoke(window,darkModeFlag,darkModeFlag);//状态栏透明且黑色字体
}else{
extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体
}
result=true;
}catch (Exception e){
}
}
return result;
}
MIUI深色状态栏字体模式如下:
<img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336098059405.png" data-rawwidth="433" data-rawheight="435" class="origin_image zh-lightbox-thumb" width="433" data-original="https://pic3.zhimg.com/7c7cc9c35b6a6a3473f87da739f5bf02_r.png">
官方在Android6.0中提供了亮色状态栏模式,配置很简单:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
或者在style属性中加上
<item name="android:windowLightStatusBar">true</item>
&lt;img src="https://file2.kaopuke.com:8081/files_image/2023060923/202306092336103793882.png" data-rawwidth="345" data-rawheight="349" class="content_image" width="345"&gt;
编辑于 2016-05-11
5 条评论
感谢
收藏
•
没有帮助
•
举报
•
作者保留权利
黄高大学生
3 人赞同
首先要打开activity的透明主题功能,可以把activity的主题设置继承*.TranslucentDecor 主题,然后设置android:windowTranslucentNavigation 或者android:windowTranslucentStatus的主题属性为true,又或者在activity的代码里面开启FLAG_TRANSLUCENT_NAVIGAT…
显示全部
首先要打开activity的透明主题功能,可以把activity的主题设置继承*.TranslucentDecor 主题,然后设置android:windowTranslucentNavigation 或者android:windowTranslucentStatus的主题属性为true,又或者在activity的代码里面开启FLAG_TRANSLUCENT_NAVIGATION 或是 FLAG_TRANSLUCENT_STATUS的window窗口标识。由于透明主题不能在4.4以前的版本里面使用,所以系统样式跟以前没有区别,也就是看不到任何变化,这是一个兼容模式,这个模式可以兼容到api 10.希望我的回答能帮到你。。亲
发布于 2015-07-08
1 条评论
感谢
收藏
•
没有帮助
•
举报
•
作者保留权利
海冰我所说的都是假的
1 人赞同
原文:
http://blog.isming.me/2016/01/09/chang-android-statusbar-text-color/
显示全部
原文:
http://blog.isming.me/2016/01/09/chang-android-statusbar-text-color/
发布于 2016-03-28
1 条评论
感谢
收藏
•
没有帮助
•
举报
•
作者保留权利
汪林玲习惯安静
2 人赞同
这是修改字体颜色吗
显示全部
这是修改字体颜色吗
发布于 2015-09-09
添加评论
感谢
收藏
•
没有帮助
•
举报
•
作者保留权利
Audien
这是修改字体颜色吗
显示全部
这是修改字体颜色吗
最后
以上就是搞怪荔枝为你收集整理的android开发,修改状态栏字体颜色?的全部内容,希望文章能够帮你解决android开发,修改状态栏字体颜色?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
- 本文分类:沉浸模式
- 浏览次数:113 次浏览
- 发布日期:2023-10-22 13:26:01
- 本文链接:https://www.kaopuke.com/article/k-p-k_13_u_23_o_22_fy_12__23__22_y.html
发表评论 取消回复