Android的clipToPadding属性做什么?

我想知道在Android中clipToPadding属性对ViewGroup有什么作用?

我浏览了一些文档和网站,但没有一个我能真正解释它是什么,它是什么意思,没有一个我能真正理解的,所以我想在这里问它可能是个好主意。

87644 次浏览

我建议你看看这篇文章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:

  • (填充)
  • 第四项
  • 第五项
  • 6项
  • 项目7
  • (填充)

现在,如果你要设置clipToPadding="false",而不只是正常地应用于整个视图,它只应用于结束项的填充,这是你在相同场景中看到的:

  • 第四项
  • 第五项
  • 6项
  • 项目7

现在如果你滚动到列表的顶部或底部,这是你会看到的:

  • (填充)
  • 第一项
  • 第二项
  • 项目3
  • 第四项

  • 项目7
  • 8项
  • 9项
  • 10项
  • (填充)

一个实际的用法是,如果你有一个浮动动作按钮,你应该使用clipToPadding结合底部填充,以确保底部项目的整体可以被看到,而不会被FAB阻碍。

明白吗?

我知道评分最高的答案通过文本很清楚地解释了这一点,但正如它所说,

一幅图胜过千言万语

下面是一张价值1500美元的动图:

(左:clipToPadding = "true"右:clipToPadding = "false")

enter image description here

clipToPadding的一个很好的用法在https://www.youtube.com/watch?v=O47H4PxMf9U中有描述(Udacity的材料设计课程的一部分)

使用clipToPadding="false"使滚动视图滚动到谷歌Maps图标的顶部。这是因为两者都在相同的FrameLayout中。

谷歌播放商店谷歌地图,显示cliptopadding

定义ViewGroup是否将剪辑其子对象并将任何EdgeEffect调整大小(但不剪辑)到其填充(如果填充不为零)。此属性默认设置为true

可能是布尔值,如“true”或“false”。

相关的方法:

setClipToPadding(boolean)