做一个点上的项目的时候遇到一个问题,就是商城首页的布局要覆盖状态栏,可以这么理解,上图:就像京东的首页一样的效果
我的项目是 MainActivity + 四个Fragment,
第一步:需要把状态栏的背景色变为透明色,这个网上很多博客都写过,我就不写了
第二部:我先说一下这个属性fitSystemWindows,因为不管是做状态栏变色和一体化布局,都相关这个属性
fitSystemWindows属性:
官方描述:
Boolean internal attribute to adjust view layout based on system windows such as the status bar. If true, adjusts the padding of this view to leave space for the system windows. Will only take effect if this view is in a non-embedded activity.
简单描述:
这个一个boolean值的内部属性,让view可以根据系统窗口(如status bar)来调整自己的布局,如果值为true,就会调整view的paingding属性来给system windows留出空间....
实际效果:
当status bar为透明或半透明时(4.4以上),系统会设置view的paddingTop值为一个适合的值(status bar的高度)让view的内容不被上拉到状态栏,当在不占据status bar的情况下(4.4以下)会设置paddingTop值为0(因为没有占据status bar所以不用留出空间)。
简单来说,这个属性就是你设置为true了,就从状态栏以下开始布局,反之,布局直接覆盖状态栏开始布局
我的情况是这样,之前在Mainactivity的布局的跟布局把这个属性设置为true了,然后我把这个属性删除,凡是依赖于Mainactivity的
Fragment的布局都会从状态栏开始布局,遇到这个问题我的解决办法是:有的fragment不需要覆盖状态栏开始布局,我就给他加一个和状态栏登高的一个view,具体怎么加你们自己看,
下面是测量状态栏高度的代码:
//获取状态栏的高度,并添加一个相同高度的view
Resources resources = getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen","android");
int height = resources.getDimensionPixelSize(resourceId);
经测试,一体化布局是可以实现的。
至于状态栏字体颜色从默认的白色变成亮色,也就是深灰色或者黑色,这个只能是在Android系统6.0以上的小米和魅族等少数几个系统才可以实现,6.0以下没有相关API