【问题标题】:Android what does the clipToPadding Attribute do?Android的clipToPadding属性有什么作用?
【发布时间】:2017-04-18 14:15:58
【问题描述】:

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

我浏览过文档和一些网站,但我遇到的没有一个能真正解释它的作用和含义,而且没有一个我能真正理解,所以我认为在这里问它可能是个好主意。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    您可以将 clipToPadding 用于滚动的视图。例如,假设您有一个列表视图,并且您在顶部和底部设置了填充。通常,无论屏幕上显示哪些项目,填充都是可见的。下图表示一个包含 10 项的列表,但屏幕上只有 4 项可见,默认为 clipToPadding 设置:

    • (填充)
    • 项目 4
    • 第 5 项
    • 第 6 项
    • 第 7 项
    • (填充)

    现在,如果您要设置 clipToPadding="false" 而不是仅仅将其正常应用于整个视图,它只会将填充应用于最终项目,这就是您在相同场景中看到的:

    • 项目 4
    • 第 5 项
    • 第 6 项
    • 第 7 项

    现在,如果您要滚动到列表的顶部或底部,您会看到以下内容:

    • (填充)
    • 项目 1
    • 项目 2
    • 项目 3
    • 项目 4

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

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

    这有意义吗?

    【讨论】:

    • 如果官方文档开始对其他主题进行这种解释,我愿意付费
    • 它只适用于recyclerview或任何视图组吗?
    • 我喜欢这个评论,而且我总是面对一个要填充的剪辑必须回到它!谢谢:)
    • 在这个答案中,是否更清楚地表明,对于第二个示例,第 3 项和第 8 项是部分可见的,因为填充没有占用空间?
    【解决方案2】:

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

    "一张图抵千言"

    这是一个价值 1500 的 GIF,描绘了相同的内容:

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

    【讨论】:

    • 然而不知何故,基于文本的答案更容易理解;)感谢您的访问!
    • 图片比文字说得更多,但文字更完整......这里没有显示正确列表的末尾,如果它有底部填充会发生什么......
    • @MHSFisher ,回答是为了演示顶部填充
    【解决方案3】:

    https://www.youtube.com/watch?v=O47H4PxMf9UUdacity's Material Design 课程的一部分)中描述了 clipToPadding 的一个很好的用法

    使用clipToPadding="false" 使滚动视图滚动到顶部的谷歌地图图标上。这是因为两者都在同一个 FrameLayout 内。

    【讨论】:

      【解决方案4】:

      我建议你看看这篇文章https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.5x2hz7q0g

      或者,也许您希望您的 RecyclerView 在透明导航栏下方滚动 — 通过结合使用 android:fitsSystemWindows=”true” 和 android:clipToPadding=”false”,您的滚动内容将位于控件后面,但是,当滚动到底部时,最后一项仍将被填充到导航栏上方(而不是隐藏在下方!)。

      【讨论】:

        【解决方案5】:

        如果填充不为零,则定义ViewGroup 是否将剪切其子级并将任何EdgeEffect 的大小调整(但不剪切)到它的填充。该属性默认设置为true

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

        相关方法:

        setClipToPadding(boolean)

        【讨论】:

          猜你喜欢
          • 2016-12-22
          • 1970-01-01
          • 2018-05-16
          • 2011-12-17
          • 2016-12-23
          • 2011-10-21
          • 2016-10-31
          • 1970-01-01
          相关资源
          最近更新 更多