【发布时间】:2017-04-18 14:15:58
【问题描述】:
我想知道clipToPadding 属性在Android 中对ViewGroup 有什么作用?
我浏览过文档和一些网站,但我遇到的没有一个能真正解释它的作用和含义,而且没有一个我能真正理解,所以我认为在这里问它可能是个好主意。
【问题讨论】:
我想知道clipToPadding 属性在Android 中对ViewGroup 有什么作用?
我浏览过文档和一些网站,但我遇到的没有一个能真正解释它的作用和含义,而且没有一个我能真正理解,所以我认为在这里问它可能是个好主意。
【问题讨论】:
您可以将 clipToPadding 用于滚动的视图。例如,假设您有一个列表视图,并且您在顶部和底部设置了填充。通常,无论屏幕上显示哪些项目,填充都是可见的。下图表示一个包含 10 项的列表,但屏幕上只有 4 项可见,默认为 clipToPadding 设置:
现在,如果您要设置 clipToPadding="false" 而不是仅仅将其正常应用于整个视图,它只会将填充应用于最终项目,这就是您在相同场景中看到的:
现在,如果您要滚动到列表的顶部或底部,您会看到以下内容:
或
一个实际的用法是,如果你有一个浮动操作按钮,你应该使用 clipToPadding 和底部填充,以确保底部项目的整体可以被看到而不会被 FAB 阻挡。
这有意义吗?
【讨论】:
https://www.youtube.com/watch?v=O47H4PxMf9U(Udacity's Material Design 课程的一部分)中描述了 clipToPadding 的一个很好的用法
使用clipToPadding="false" 使滚动视图滚动到顶部的谷歌地图图标上。这是因为两者都在同一个 FrameLayout 内。
【讨论】:
我建议你看看这篇文章https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g
或者,也许您希望您的 RecyclerView 在透明导航栏下方滚动 — 通过结合使用 android:fitsSystemWindows=”true” 和 android:clipToPadding=”false”,您的滚动内容将位于控件后面,但是,当滚动到底部时,最后一项仍将被填充到导航栏上方(而不是隐藏在下方!)。
【讨论】:
如果填充不为零,则定义ViewGroup 是否将剪切其子级并将任何EdgeEffect 的大小调整(但不剪切)到它的填充。该属性默认设置为true。
可以是布尔值,例如“true”或“false”。
相关方法:
setClipToPadding(boolean)
【讨论】: