我想知道在Android中clipToPadding属性对ViewGroup有什么作用?
clipToPadding
ViewGroup
我浏览了一些文档和网站,但没有一个我能真正解释它是什么,它是什么意思,没有一个我能真正理解的,所以我想在这里问它可能是个好主意。
我建议你看看这篇文章https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g
或者也许你想让你的RecyclerView滚动到一个透明的导航栏下面-通过使用android:fitsSystemWindows= " true "结合android:clipToPadding= " false ", 您的滚动内容将在控件后面,但是,当滚动到底部时,最后一项仍将被填充到导航栏上方(而不是隐藏在下面!)
对于滚动的视图,可以使用clipToPadding。比如说你有一个listview你在顶部和底部设置了填充。通常情况下,无论哪个项目在屏幕上可见,填充都是可见的。下图表示一个包含10个项目的列表,但在屏幕上只有4个是可见的,默认设置为clipToPadding:
现在,如果你要设置clipToPadding="false",而不只是正常地应用于整个视图,它只应用于结束项的填充,这是你在相同场景中看到的:
clipToPadding="false"
现在如果你滚动到列表的顶部或底部,这是你会看到的:
或
一个实际的用法是,如果你有一个浮动动作按钮,你应该使用clipToPadding结合底部填充,以确保底部项目的整体可以被看到,而不会被FAB阻碍。
明白吗?
我知道评分最高的答案通过文本很清楚地解释了这一点,但正如它所说,
“一幅图胜过千言万语”
下面是一张价值1500美元的动图:
clipToPadding = "true"
clipToPadding = "false"
clipToPadding的一个很好的用法在https://www.youtube.com/watch?v=O47H4PxMf9U中有描述(Udacity的材料设计课程的一部分)
使用clipToPadding="false"使滚动视图滚动到谷歌Maps图标的顶部。这是因为两者都在相同的FrameLayout中。
FrameLayout
定义ViewGroup是否将剪辑其子对象并将任何EdgeEffect调整大小(但不剪辑)到其填充(如果填充不为零)。此属性默认设置为true。
EdgeEffect
true
可能是布尔值,如“true”或“false”。
相关的方法:
setClipToPadding(boolean)