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