fragment中处理沉浸式状态栏总结
2016-12-27 本文已影响14314人
三少爷的码
效果图如下

背景
- 在项目中需要实现这样的功能:轮播图的内容与融合到状态栏中。这个需求在Activity中实现起很简单,但是在项目中使用viewpager+fragment的组合界面,处理不同的fragment中显示不同的状态栏还是有点难度。
处理思路
1.将状态栏颜色设为透明, 利用系统提供的这个android:fitsSystemWindows="true",添加该属性到View中;该属性网上有很多人都写过了。不懂的同学可以自行百度。
2.在设置了该属性的View的高度需要写死,大概在60-70dp左右(我在项目中将状态栏固定为20dp,剩下尺寸就是你自己的控件了)
3.调整View的相对位置
具体实现代码
- 将状态栏透明
window.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- 需要注意的事情:千万不要在MainActivity中添加android:fitsSystemWindows属性,否则会出现空白一块的情况,需要在fragment的布局文件中添加该属性

- 自定义的top_bar,固定宽高和计入属性

- 最终效果
