Android修改状态栏颜色 布局错乱问题解决

原创 2015年11月19日 16:01:19

android修改状态栏颜色 布局错乱问题解决

转载请注明出处(http://blog.csdn.net/ps1397111/article/details/49929045

修改装状态栏颜色需要用的的库
SystemBarTintManager开源库

看一看状态栏变色效果
这里写图片描述

状态栏变色需要的代码,只能在4.4以上的机器上运行,并且必须开启透明主题。

首先是manifest里面activity的theme

        android:theme="@android:style/Theme.Translucent.NoTitleBar" 

这个目的是让布局透明,并隐藏标题栏。

然后在activity里面需要的代码

        //状态栏变色
        if (UenUtils.getSDKVersion() > 18) {
            Window win = getWindow();
            WindowManager.LayoutParams winParams = win.getAttributes();
            final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
            winParams.flags |= bits;
            win.setAttributes(winParams);
           // 创建状态栏的管理实例
           SystemBarTintManager tintManager = new SystemBarTintManager(this);
           // 激活状态栏设置
           tintManager.setStatusBarTintEnabled(true);
           // 激活导航栏设置
//         tintManager.setNavigationBarTintEnabled(true);
           // 设置一个颜色给系统栏
           tintManager.setTintColor(Color.parseColor("#BC1E21"));
        }

讲一讲在开发过程中遇到的问题,首先是在manifest中theme设置为了android:theme="@android:style/Theme.Translucent",但是在模拟器上运行效果没有任何问题,然后在自己的索尼Z3上也没问题,之后在小米note和华为上,发现在手机状态栏和app的title中间是灰色的。之后发现灰色是因为没有设置NoTitleBar属性导致的。之后设置了NoTitleBar,又发现app的title被状态栏挡住了一部分,百思不得其解。最后在网上查了半天解决了问题,在布局中添加一行属性,解决问题。

这里写图片描述

    android:fitsSystemWindows="true" 

这个的实质是 4.x 风格的状态栏半透明。它会把状态栏那一块先蒙上一层半透明的灰色(#66000000)遮罩,再和主要试图区域连在一起,扔给你的 activity。故而你的 actionBar 会上挪到屏幕顶部,修正的方法是在布局 xml 的 root 节点里加入:

android:fitsSystemWindows="true"

即可。如果布局比较复杂的话,简单的 fitsSystemWindows 也许就不能应付需求了,若需要手工计算顶栏(statusBar)的高度,送人送到底我还是贴出来吧:


public int getStatusBarHeight() {
        int result = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

对应的底部虚拟按键是 android:windowTranslucentNavigation。

顺便mark一下各种theme

android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式

android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" : 不显示应用程序标题栏,并全屏

android:theme="Theme.Light ": 背景为白色

android:theme="Theme.Light.NoTitleBar" : 白色背景并无标题栏

android:theme="Theme.Light.NoTitleBar.Fullscreen" : 白色背景,无标题栏,全屏

android:theme="Theme.Black" : 背景黑色

android:theme="Theme.Black.NoTitleBar" : 黑色背景并无标题栏

android:theme="Theme.Black.NoTitleBar.Fullscreen" : 黑色背景,无标题栏,全屏

android:theme="Theme.Wallpaper" : 用系统桌面为应用程序背景

android:theme="Theme.Wallpaper.NoTitleBar" : 用系统桌面为应用程序背景,且无标题栏

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" : 用系统桌面为应用程序背景,无标题栏,全屏

android:theme="Theme.Translucent : 透明背景

android:theme="Theme.Translucent.NoTitleBar" : 透明背景并无标题

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" : 透明背景并无标题,全屏

android:theme="Theme.Panel ": 面板风格显示

android:theme="Theme.Light.Panel" : 平板风格显示

参考:Android 5.0 如何实现将布局的内容延伸到状态栏实?

相关文章推荐

FQA android----界面布局的颜色和Xml定义的不一致

在XML布局的如下:

Android 五步修改状态栏颜色

在官方文档中介绍了可以引用v21的兼容包,在样式中配置如下主题样式就可以达到我们的目的 "Theme.MyTheme" parent="Theme.AppCompat.Light"> ...
  • lxg2015
  • lxg2015
  • 2016年06月21日 17:53
  • 2279

android - ListView优化机制及滑动时数据时出现的数据错乱重复问题

目录(?)[+] 该篇内容主要是记录我在实际开发中遇到的ListView滑动时数据错乱的几种情况,以及解决方法。在进行ListView滑动时数据错乱问题讨论之前会对ListView所谓的进行说明...

android 性能分析工具、布局分析工具、monkey自动化测试的简单使用

其实很久以前就想写一篇这个文章,直到最近要用到monkey的时候,自己竟然忘了一大部分,然后在网上到处找资料。还不如干脆来写一篇博客的好。简单介绍下这几个工具: 1、性能分析工具(TraceVi...

在activity中调用finish后并不是立马跳转

我一直以为在activity中执行finish后,会直接关闭该acitivy剩下的方法,以至于每次都将要调用的方法都写在了finish之前。 下面讲写一个小demo来证明finish后是怎么跳转的。流...

Android ListView滑动过程中图片显示重复错乱闪烁问题解决

最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决   主要分析Android ListView滚动过程中图片显示重复、错乱、闪烁的原因及...

Android ListView滑动过程中图片显示重复错乱闪烁问题解决

SF
  • ytbnkkf
  • ytbnkkf
  • 2013年11月25日 00:12
  • 573

Android高德地图步行路径规划错乱的问题解决[问题一]

因为最近项目需求要做地图,用的是高德的。需要在两点之间规划步行路径。 但是在开发中遇到了些比较蛋疼的问题。做次记录以备日后查阅。 我用的是高德4.11版本的3d地图 问题一: 步行路径规划,当终点...

Android开发之透明导航栏状态栏后与软键盘产生冲突的问题解决

Android开发之透明导航栏状态栏后与软键盘产生冲突的问题解决
  • cmwly
  • cmwly
  • 2017年05月12日 16:15
  • 216
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android修改状态栏颜色 布局错乱问题解决
举报原因:
原因补充:

(最多只允许输入30个字)