美文网首页
Android透明状态栏

Android透明状态栏

作者: SupLuo | 来源:发表于2017-03-16 00:04 被阅读65次

    透明状态栏效果只支持4.4及以后的系统

    1. 在Activity的onCreate方法中调用下面语句,支持透明状态栏。
      getWindow().getAttributes().flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
      等同于在values-19文件下申明的主题中增加
      <item name="android:windowTranslucentStatus">true</item>
      通过以上步骤,状态栏背景已经变成透明了,并且Activity的布局内容会显示在状态栏下面。

    2. 将内容移到状态栏以下

    • 利用状态栏的高度
      在Activity布局文件的根节点上添加paddingTop,大小为状态栏高度。
      具体做法,在values目录下创建一个root_padding_top(变量名,名字根据需求取)变量,值为0dp;在values-19下创建同样一个变量,值为25dp
      为什么是25dp,可以查看源代码,也可以使用以下代码获取状态栏高度(标注:我在自己的vivo x6s上获取的高度为69px,转换成dp为23)
        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:fitsSystemWindows="true"
      在Activity布局文件的根结点上添加上述语句即可使内容显示在状态栏以下。

    完成上面两部之后,内容基本显示正常,但是在4.4上,状态栏的背景颜色是半透明带灰色的,在5.0上是程序的主题色,所以5.0的效果看起来是可以,应该是5.0有所优化。

    1. 解决4.4灰色背景
      。。。

    相关文章

      网友评论

          本文标题:Android透明状态栏

          本文链接:https://www.haomeiwen.com/subject/lhtdnttx.html