通过设置属性去掉导航栏(百度一下一堆),本文主要是解决一些手机上设置状态栏颜色不生效的问题。 

设置状态栏颜色主要通过下列代码

            Window window = context.getWindow();            View decorView = window.getDecorView();            int systemUiVisibility = decorView.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {                if (!isDarkBackground(color)) {                    systemUiVisibility |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;                } else {                    systemUiVisibility = systemUiVisibility & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;                }            }            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            decorView.setSystemUiVisibility(systemUiVisibility);            window.setStatusBarColor(Color.TRANSPARENT); 

判断深色和浅色之后,通过设置SYSTEM_UI_FLAG_LIGHT_STATUS_BAR来设置状态栏图标的颜色是黑色还是白色的。

但是有的手机上发现设置这个属性不生效。 (注:或这个属性的时候是黑色的状态栏,非这个状态栏的时候是白色)

经过一番调研之后发现,这个属性的生效不取决于这个SYSTEM_UI_FLAG_LIGHT_STATUS_BAR,还是取决于statusbar的颜色,但是给状态栏设置颜色之后就不是真正的沉浸式状态栏了,那怎么办呢。我们知道Android的颜色是ARGB,第一个属性是透明度,那只要A是透明的,其实颜色设置成什么样子的都是无所谓的。 

            if (!isDarkBackground(color)) {                window.setStatusBarColor(0x00FFFFFF);            } else {                window.setStatusBarColor(0);            }

再加上上述代码,完美解决不同手机上对状态栏颜色设置的问题。

 

 

 

 

更多相关文章

  1. Android绘制一个三角形并且可动态改变颜色
  2. Android(安卓)ImageView的scaleType属性与adjustViewBounds属性
  3. Android——EditText自定义边框、圆角和其常用属性总结
  4. android 通知栏背景颜色跟随app导航栏背景颜色变化而变化
  5. 如何锁定横屏或竖屏
  6. ListView 自动滚动
  7. Android(安卓)ColorStateList使用方法
  8. Android-Dialog风格Activity开发
  9. Android动画研究

随机推荐

  1. Android(安卓)照相机
  2. Android(安卓)Launcher抽屉类SlidingDraw
  3. Android之——自己定义TextView
  4. 32位ubuntu10.04编译Android4.0.1内核
  5. Android异步机制一:使用Thread+Handler实
  6. Android经典应用程序开发
  7. Android各种访问权限Permission详解
  8. Android高手进阶教程(十一)之----Android
  9. Android应用程序的生命周期
  10. Android(安卓)Things:你应该了解的Android