android状态栏颜色修改
 
状态栏颜色的修改在4.4和5.x环境下分别有不同的方式,低于4.4以下是不能修改的。
 

5.x环境下

方式一,状态栏将显示为纯净的颜色,没有渐变效果
  1. /**
  2. * 状态栏相关工具类
  3. *
  4. */
  5. public class StatusBarUtils {
  6. public static void setWindowStatusBarColor(Activity activity, int colorResId) {
  7. try {
  8. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  9. Window window = activity.getWindow();
  10. window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
  11. window.setStatusBarColor(activity.getResources().getColor(colorResId));
  12. //底部导航栏
  13. //window.setNavigationBarColor(activity.getResources().getColor(colorResId));
  14. }
  15. } catch (Exception e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. public static void setWindowStatusBarColor(Dialog dialog, int colorResId) {
  20. try {
  21. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  22. Window window = dialog.getWindow();
  23. window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
  24. window.setStatusBarColor(dialog.getContext().getResources().getColor(colorResId));
  25. //底部导航栏
  26. //window.setNavigationBarColor(activity.getResources().getColor(colorResId));
  27. }
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }

效果图如下:状态栏被改成android.R.color.holo_blue_bright,标题栏颜色可以和状态栏一样,EditText的输入也没有受影响

ps:如果顶部为渐变效果,可能是在主题中设置windowTranslucentStatus=true属性。
 
方式二:
通过Style来修改状态栏颜色。
1.设置 colorPrimary,colorPrimaryDark两个颜色。
  1. <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  2. <item name="colorPrimary">@android:color/holo_blue_bright</item>
  3. <item name="colorPrimaryDark">@android:color/holo_blue_bright</item>
  4. </style>
2. AndroidManifest.xml文件中的targetSdkVersion必须设置在21以上。
3.parent主题必须是Theme.AppCompat开头,兼容包下的主题,所以必须一用v7包。
colorPrimary,colorPrimaryDark这两个属性是Material Design风格中规定的。具体位置如下图所示:
 
 
方式三:
1.在res/values-v19文件夹下添加styles.xml文件内容如下
  1. <style name="AppTheme" parent="@style/BaseAppTheme">
  2. <item name="android:windowTranslucentStatus">true</item>
  3. </style>
2.顶部标题的控件设置两个属性
  1. android:background="@android:color/holo_blue_bright"
  2. android:fitsSystemWindows="true"
则状态栏会保持与设置fitsSystemWindow属性的控件的背景颜色一致。
 
4.4环境下
上面的方式三也适用4.4环境。不过4.4和5.x下显示的效果有差异。根据本人测试结果来看,不同的手机厂商对于这种情况下,状态栏有的是渐变,有的是添加了一层黑色半透明层。
 
存在bug及解决办法
修改windowTranslucentStatus/Navigation="true"。会导致EditText输入时,即使使用了 adjustResize,软键盘也会挡住EditText
解决办法参考:
 
 
其他参考资料:
 

Android状态栏颜色修改的更多相关文章

  1. 设置android状态栏颜色和toolbar颜色一致

    使用:https://github.com/jgilfelt/SystemBarTint在Activity中:@Overrideprotected void onCreate(Bundle saved ...

  2. Android修改状态栏颜色全方位教程

    关键字:状态栏着色 透明状态栏 沉浸式 白底黑字 Github Demo:https://github.com/imflyn/Eyes 参考文章: Android-transulcent-status ...

  3. Android开发技巧——设置系统状态栏颜色

    开门见山,先来三张效果图: 然后我们再来讲如何实现以及如何快速地实现. 如何实现 实现设置系统状态栏颜色需要至少在Android 4.4.2(API 19)以上.这是因为,在这个版本以下,没有任何的A ...

  4. Flutter修改状态栏颜色以及字体颜色

    Flutter沉浸式状态栏 void main() { runApp(MyApp()); if (Platform.isAndroid) { // 以下两行 设置android状态栏为透明的沉浸.写在 ...

  5. Android Studio -修改LogCat的颜色

    Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Edit ...

  6. IOS8修改状态栏颜色

    IOS8修改状态栏颜色 http://blog.csdn.net/suelu/article/details/43701913 使用了storyboard,直接view controller里面设置s ...

  7. android自定义状态栏颜色

    我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦,这是个不错 ...

  8. Android 使用SystemBarTint设置状态栏颜色

    做项目时,发现APP的状态栏是系统默认的颜色,突然想到,为啥别的APP是自己设置的颜色(和APP本身很相搭),于是也想给自己的APP设置系统状态栏的颜色,更加美美哒... 搜了下,发现原来设置状态栏居 ...

  9. Android 4.4及以上系统下应用的状态栏颜色渐变效果的实现

    上一篇转载的博文里讲到了怎么开启状态栏透明的效果,不过如果在有ActionBar的情况下,会出现状态栏透明而ActionBar横亘在状态栏和内容之间的丑陋情况,如下图: 通过百度之后,发现了GitHu ...

随机推荐

  1. Android 基于Netty的消息推送方案之概念和工作原理(二)

    上一篇文章中我讲述了关于消息推送的方案以及一个基于Netty实现的一个简单的Hello World,为了更好的理解Hello World中的代码,今天我来讲解一下关于Netty中一些概念和工作原理的内 ...

  2. 多线程下载 HttpURLConnection

    Activity /**实际开发涉及文件上传.下载都不会自己写这些代码,一般会使用第三方库(如xUtils)或Android提供的DownloadManager下载*/ public class Ht ...

  3. script 表单验证

    表单验证:一.非空验证:1.内容是不是空的.判断值的长度是不是0.length属性.压缩空格的函数. 2.内容是不是改变了. 二.对比验证:1.验证两个控件值的关系(相同,大小) 2.验证控件的值与某 ...

  4. Multipatch对象

    Multipatch对象是 TriangleStrip 和TriangleFan, Trangle,Ring对象的集合 TriangleStrip TriangleFan Trangle

  5. oracle nvl()函数在使用中出现的问题

    看一条sql select q.*, r.goods_name from (select nvl(t.goods_code, s.goods_code) goods_code, t.buy_open_ ...

  6. iOS分享 - AFNetworking之多图片/文件上传

    在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...

  7. Say bye to CMake and Makefile

    用了几年的CMake,最近想试着琢磨如何将C++应用的动态链接全部改成静态链接,发现还需要研究CMake的用法,进入CMake的文档, http://www.cmake.org/cmake/help/ ...

  8. 【回忆1314】回忆之placeholder

    直接看效果点这里 HTML <!DOCTYPE html> <html> <head lang="zh-CN"> <meta charse ...

  9. EC2.0开启多规格后,编辑无法获取规格数据

    我们其实一共碰到2个问题, 1. 一个是弹出了货品编辑画面,但是货品的明细没有2.有货品明细但是货品明细各个字段都是空的, 上面2种情况数据库都是有值的. 第一个问题解决方案: 修改html中的JS ...

  10. jquery1.9学习笔记 之层级选择器(一)

    子选择器(“parent > child”) 描述:选择所有父元素的直系子元素. 例子: <!doctype html> <html lang='zh'> <hea ...