您的位置:首页 > 其它

fitsSystemWindows

2016-07-01 00:33 183 查看

什么是
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: