clipToPadding
基本上意思是“如果视图超出其边界到填充区域中,则用父级填充覆盖此图形”。
高架视图的阴影绘制在视图边界之外。为了使其可见,您需要确保视图周围有空间。您可以通过在父级上设置填充来实现此目的,但是您需要设置clipToPadding=false
以便阴影不会被覆盖。
如this answer所述,当您有可滚动的视图(如ListView或RecyclerView)时,这也很有用。滚动列表时会将内容从界限中抽出。如果您设置了clipToPadding=false
,那么您将能够看到该内容而不是填充,并且只能在完全向上或向下滚动时看到填充。
作为一个例子,我们设置一个椭圆形状作为视图的背景,让我们提升这个视图。我们还会在容器上设置一些填充。下面的屏幕截图是在开发人员选项中激活的“显示布局边界”。两个红色矩形之间的区域是父级的填充。
这是它的外观与clipToPadding=true
,注意阴影是如何在底部,它介于这两种红色矩形之间剪短
随着clipToPadding=false
,我们看到整个影子:
这里是我使用的XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="#8888ff">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"
android:layout_centerInParent="true">
<View
android:layout_width="170dp"
android:layout_height="170dp"
android:background="@drawable/oval"
android:alpha="0.5"
android:elevation="5dp"
/>
</RelativeLayout>
</RelativeLayout>
这里是为oval
绘制:
<shape android:shape="oval">
<solid android:color="#f2f2f2"/>
</shape>
呵呵。 Android文档有时可能会让人困惑,更不用说填充了语法错误,还有什么不是。也许[this](https://plus.google.com/photos/+AndroidDevelopers/albums/5984848297731814001)可以提供帮助吗? (您需要通过单击Read More扩展文本,位于GIF上方。) –
基本上,如果您'clipToPadding = true',则父项将裁剪其子项,就好像填充的部分将子项隐藏在其下的一部分。我不知道我是否对你很有意义...:/ –
嗯,我也设法找到与列表相同的例子,但我不明白,它是如何工作的,什么时候没有列表,但是普通[无列表]视图:( – rofl