android设置状态栏颜色,android 状态栏文字颜色

Android设置状态栏颜色和状态栏文字、图标颜色

Android开发中,经常需要实现下图状态栏的效果,类似于沉浸式状态栏,但这里仅仅是讨论设置状态栏的颜色和状态栏上面文字、图标的颜色的方法。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了西平免费建站欢迎大家使用!

Android 4.4(API 19)之后,就提供了修改状态栏颜色的方法,但是在 Android 6.0(API 23)之后,才支持修改状态栏上面的文字和图标颜色,默认是白色的。所以会导致一个问题,在 4.4 到 6.0 之间的系统,状态栏设置为浅色的话,状态栏上面白色的文字和图标会看不清,像下面这样:

有一些第三方的系统提供了设置状态栏和状态栏文字、图标颜色的方法,比如小米的MIUI和魅族的Flyme,所以考虑了下比较好的实现方式是:

当然,这里面也会有坑,比如 MIUI 提供的修改状态栏字体颜色方法会跟 Android 系统自带的方法冲突,官方说明如下: 关于MIUI状态栏字符颜色逻辑调整说明

经过网上的资料和自己的尝试,MIUI 系统还是同时使用 MIUI 提供的方法和 Android 系统自带的方法来修改状态栏字体颜色比较保险。

基于上面的思考,封装了设置 Android 4.4 以上系统状态栏颜色和状态栏字体、图标颜色的方法:

要在 Application Theme 加上 item name="android:fitsSystemWindows"true/item ,不然页面会顶到状态栏上面,或者在 Activity 的布局里面加上 android:fitsSystemWindows="true" 和 android:clipToPadding="false" 也可以。

最终实现的效果如下:

大家有更好的方案可以告诉我~

Android状态栏着色(非沉浸式状态栏)

由于产品需求 , 要将一级页面的5个Fragment设置不一样颜色的状态栏; 然后我对着网上的博文抄了一遍 ,发现兼容问题很差 , 要么就是顶部的状态栏没有实现全屏 , 要么就是底部的虚拟按钮遮挡导航栏(华为手机和小米手机), 最后自定义主题和设置xml布局顶部高度来解决了这个问题;

解决方案:

第一步.在values的styles中自定义主题:

第二步.创建values-v19文件夹和styles.xml:

第三步.创建values-v21文件夹和styles.xml:

第三步.引用主题:

第四步.Fragment 状态栏填充颜色:(如果一节界面的头部是轮播图直接预留20dp的高度)

不设置预留高度,状态栏会和toolbar叠加在一起 (状态栏在toolbar上方)

运行后效果图如下:

轮播图在顶部的时候直接预留状态栏的高度即可:

指定颜色的界面设置多一层有颜色的View:

android导航栏与状态栏颜色及透明度

首先创建一个空项目,如下图

可以看到状态栏是白字黑背景, 导航栏也是白图标黑背景

嘿嘿, 我们先把状态栏隐藏掉,在添加一个ImageView, 让ImageView做背景(方便查看)

样子如下:

将状态栏和导航栏设置透明, 找到 Manifest.xml 文件, 在主题样式中修改

android:statusBarColor 设置状态栏背景色

android:navigationBarColor 同上

android:windowLightStatusBar 设置状态栏文字色, true为深色, false为白色

android:windowLightNavigationBar 同上

android:windowTranslucentStatus 设置状态栏半透明状态, true为半透明, false为不透明

android:windowTranslucentNavigation 同上

最后两个半透明状态下面没用, 可自己尝试看效果

效果图如下:

可以看到导航栏与状态栏并没有透明,原因是默认不能占用状态栏空间与导航栏空间,根布局背景为白色,所有这里显示白色

可以通过设置 getWindow().getDecorView().setSystemUiVisibility() 来适配

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 适配状态栏空间

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 适配导航栏空间

效果如下:

android状态栏颜色修改

Activity activity = getActivity();

Window window = activity ==null ?null : activity.getWindow();

if (window !=null Build.VERSION.SDK_INT = Build.VERSION_CODES.M) {

window.setStatusBarColor(getResources().getColor(R.color.statusbarcolor, null));

int visibility = window.getDecorView().getSystemUiVisibility();

visibility = visibility|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;

window.getDecorView().setSystemUiVisibility(visibility);

}

设置状态栏为沉浸式模式

Window window = getWindow();

if (window !=null) {

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.M) {     window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)

window.setStatusBarColor(Color.TRANSPARENT); }

}

设置状态栏为非沉浸式模式并设置颜色

Window window = getWindow();

if (window !=null) {

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.M) {

window.setStatusBarColor(getResources().getColor(R.color.status_color));

window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

}

}

android怎么改变状态栏颜色

参考如下内容:

android4.4 以下修改状态栏颜色的方法为:

1、首先会懂得反编译,电脑上要安装java环境和反编译工具。没有的百度搜索下载安装。这里就不多说了。

2、要准备一个framework-res.apk放在一边待用,把framework-res.apk复制到反编译工具里、反编译framework-res.apk后打开res\values\styles.xml。

3、直接搜索以下代码

style name="TextAppearance.StatusBar" parent="@style/TextAppearance"

你会看见style name="TextAppearance.StatusBar" parent="@style/TextAppearance"

item name="textSize"14.0sp/item

item name="textStyle"normal/item

item name="textColor"?textColorPrimary/item

/style 然后修改这一段代码item name="textColor"?textColorPrimary/item 为 item name="textColor"#ff000000/item

000000为颜色代码 想要什么颜色就修改成自己喜欢的颜色就可以了 颜色对照表可以参考

4、然后回编译。回编译完成后用电脑上的压缩软件打开回编译好的framework-res.apk,拖出里面的resources.arsc替换进事先准备好的framework-res.apk里就可以了。然后用复制到内存卡 用RE复制或者移动到system里 修改权限 3 1 0,在移动到framework里覆盖就可以了。关机重启,状态栏的通知内容颜色也变了。

Android 状态栏的设置

先看一下默认的情况:

蓝色一行是自定义的导航栏,

黑色的是自带的 ActionBar ,也就是我们说的标题栏。

首先一般都会选择去掉 ActionBar:

隐藏 actionbar 有很多种方法

这种方法是全局中隐藏了标题栏。

其实在我的手机更新系统之前,隐藏了 ActionBar 后,状态栏和自定义的导航栏颜色是相匹配的,不知道什么原因现在默认为灰色了。

上面使用的主题虽然隐藏了标题栏,但是和我们自定义的导航栏不搭,

这时候我们可以选择用自定义的主题(Theme),来改变状态栏:

在 values 下的 style.xml 中添加

或者在 onCreate 中:

上面两行一般不一起设置,二选一即可。

第一行设置导航栏为透明,第二行将导航栏隐藏。

不推荐第二种做法,如果一个 Activity 中设置了隐藏导航栏而另一个 Activity 没有,那两者切换的时候会不好看。

融合的效果:

状态栏和 app 顶部相融合了,如果标题栏是一张图片效果会更好。

这里还有一个问题,状态栏的文字和我们导航栏的文字重叠了,

我们可以选择在布局文件的根元素中添加:

让布局为状态栏留出空间,就不会出现上面这张被状态栏遮挡的情况。

如果像上面的例子是一样的纯色的标题栏,我们可以选择直接改变状态栏的颜色解决问题。

或者:

不显示时间、电量等信息和文字:

同要可以用修改 Theme 来实现:

或者在 OnCreat() 中加入,还是要注意加在 setContentView() 的前面

如果想让图片全屏要注意设置为:


当前文章:android设置状态栏颜色,android 状态栏文字颜色
网站网址:http://pwwzsj.com/article/hojedg.html