摘要:弊端需要给每个不想实现沉浸式的页面新增多余且相似的代码。弊端需要变化的值,导致页面有细微的滑动。
需求
MainActivity中包含五个Fragment,但是只要求HomeFragment实现沉浸式,其余Fragment不实现沉浸式,保持原来的模样
注意:仅Android21及其以上系统支持
思路前提:沉浸式只能作用在Activity上!
思路1 思路步骤使MainAcitivity实现沉浸式,此时所有Fragment页面都将实现沉浸式;
为每一个Fragment页面新增一个View,此处需要注意布局方式(FrameLayout布局可能比较难处理);
为每一个Fragment实现新增View的高度和背景色。
实现步骤1、使MainAcitivity实现沉浸式:
StatusBarUtil.setStatusBarTransparent(activity);
2、 为每一个不需要实现沉浸式的Fragment页面新增一个View:
3、为每一个不需要实现沉浸式的Fragment实现新增View的高度和背景色:
StatusBarUtil.setStatusViewAttr(view, activity);优缺点
优点:可控性高;并且在布局文件中静态实现了高度和背景色,不需要实时计算(此点相对于 思路2 而言)。
弊端:需要给每个不想实现沉浸式的Fragment页面新增多余且相似的代码。
思路2 思路步骤使MainAcitivity实现沉浸式,此时所有Fragment页面都将实现沉浸式;
获得DecorView之后,动态的为其子View设置topMargin,实现Fragment页面切换时沉浸
实现步骤1、使MainAcitivity实现沉浸式:
StatusBarUtil.setStatusBarTransparent(activity);
2、使默认第一个显示的Fragment页面实现沉浸式:
StatusBarUtil.createStatusView(activity); StatusBarUtil.hideStatusView(activity, true);
3、使其它Fragment不实现沉浸式,在实现沉浸式效果的Fragment中加入下面代码:
@Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (hidden) { StatusBarUtil.hideStatusView(activity, false); } else { StatusBarUtil.hideStatusView(activity, true); } }优缺点
优点:可集成为一个工具类,不需要在Fragment中新增代码。
弊端:需要变化topMargin的值,导致页面有细微的滑动。
思路3还在搜索中......
源码StatusBar
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76749.html
摘要:前言我们先一起来回顾一下实现沉浸式状态栏的一般套路。从以上版本才是真正的可以设置沉浸式体验,但也仅仅是操作状态栏和导航栏的显示与隐藏。属性解释设置了表明会负责系统的绘制,绘制透明背景的系统状态栏和导航栏,然后用和的颜色填充相应的区域。 前言 我们先一起来回顾一下实现沉浸式状态栏的一般套路。在Android上,关于对StatusBar(状态栏)的操作,一直都在不断改善,并且表现越来越好,...
阅读 361·2024-11-06 13:38
阅读 736·2024-09-10 13:19
阅读 865·2024-08-22 19:45
阅读 1362·2021-11-19 09:40
阅读 2597·2021-11-18 13:14
阅读 4265·2021-10-09 10:02
阅读 2282·2021-08-21 14:12
阅读 1267·2019-08-30 15:54