fitsSystemWindows

什么是 fitsSystemWindows

System windows 是指屏幕中系统渲染的部分,包括不可交互的部分(如状态栏)或者可交互的部分(如屏幕底部的虚拟按键导航栏)。
一般情况下,应用不需要在这些系统UI的位置进行绘制。而一旦应用有这种需求,便需要保证不被系统UI控件(如状态栏、导航栏)盖住应用的交互控件(例如应用中的一个按钮)。这就是 fitsSystemWindows 所做的事情,它为应用的控件设置额外的 padding,以确保其位于系统控件的范围之外。

BEFORE (API LEVEL <= 19)

fitSystemWindows() 从最外层的 View 中开始被调用,然后一旦某个 View 消耗掉这个事件,其子 View 不会再收到 fitSystemWindows 回调。

AFTER (API LEVEL >= 20)

fitSystemWindows() 被废弃,取而代之,此时被重写的方法应该是 onApplyWindowInsets(),在你重写的方法中,你可以消耗掉任意大小的 insets,然后把剩下的 insets 用 dispatchApplyWindowInsets() 方法传递给下一层。

关于此特性的应用

Android Design Library 中,CoordinatorLayout CollapsingToolbarLayout 等 ViewGroup 均使用了此特性。当你使用 Design Library 出现应用界面被系统 UI 遮住的情况时,很可能就是没有正确地指定 fitSystemWindows

REF

[1] Why would I want to fitsSystemWindows? — Google Developers — Medium
[2] http://stackoverflow.com/questions/31190612/fitssystemwindows-effect-gone-for-fragments-added-via-fragmenttransaction/34345286#34345286

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值