想做出好看的界面,看到扣扣界面状态栏和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颜色一样,也算投机取巧吧*
到此结束,感觉界面的坑好深好深