安卓沉浸式(透明)状态栏学习小结

想做出好看的界面,看到扣扣界面状态栏和toolbar(Actionbar)颜色一样,就查了一下:

沉浸状态栏

这里写图片描述
就是顶部状态栏变得透明,背景变为activity的背景;
要求版本是5.0以上,不过现在应该没有不符合的了(minsdk 21)

第一步
以下二选一

**一**
   java文档里改
  if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }  
    这个需要在每一个activity里写,在`setContentView(R.layout.XXX)`后面声明就可以
  **二**
    在style里改,在style里增加一个新项
   <item name="android:windowTranslucentStatus">true</item>  
    在style的theme里增加这一项,所有使用这个theme的activity都自动这样

第二步
写到这里运行就会发现一些问题,如图这里写图片描述
可以看到,状态栏的颜色变了,但是actionbar却被挤压了,这是因为状态栏透明后,整个布局向上平移,却不能遮盖状态栏,因此就挤压了actionbar里面的内容
改进方法,在activity布局里的第一个组件里增加一句

    android:fitsSystemWindows="true"
这样就会发现上部给状态栏留出了空隙

## **第三步** ##

      这时候会发现还是有bug,第一,当第一个布局是toolbar时,第二步无效;
      第二,当有drawlayout时,只有drawlayout有这种效果,主界面没有;第三,当含有include布局时,各种bug

      所以直接来最终方法:第二部的就是为了给状态栏留一个空间,可以直接在第一个布局上声明状态栏的高度是25dp,

      我们直接留出25dp就可以了,所以只需1.3两步就可以了
      *然后又想起一个问题,当有抽屉布局时对于主界面这个效果是无法实现的,因为有drawlayout的通常只有一个,所以可以把theme的
      colorparimydark设置成和这个activity的actionbar颜色一样,也算投机取巧吧*

到此结束,感觉界面的坑好深好深

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值