項目中需要實現如下效果的布局
也就是一個左右下角帶圓角,上方不帶圓角的白色背景矩形,而且只有左、右和下邊框,顏色為淺灰色。
當然,切一個.9圖片作為背景也能實現,但是能用代碼實現的還是盡量用代碼實現,因為圖片過多一個消耗內存,另一個還增加apk大小。
這種效果可以通過layer-lsit來實現,在drawable文件夾下面建一個xml文件,具體代碼如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 3 <!-- 4 layer-list中的item是按照順序從下往上疊加的,即先定義的item在下面,后面的依次往上面疊放 5 --> 6 <!-- 這里定義一個下面帶圓角,上面不帶圓角的矩形,邊框顏色為@color/line_color --> 7 <item> 8 <shape> 9 <corners android:bottomLeftRadius="5dp" 10 android:bottomRightRadius="5dp" /> 11 <stroke android:width="1px" android:color="@color/line_color" /> 12 </shape> 13 </item> 14 <!-- 15 這里定義一個下面帶圓角,上面不帶圓角的矩形,背景為白色 16 這里設置了android:right="1px" android:left="1px" android:bottom="1px"屬性 17 android:right="1px"表示該item右邊往里面縮了1px 18 android:left="1px"表示該item左邊往里面縮了1px 19 android:bottom="1px"表示該item下面往里面縮了1px 20 這樣,左、右、下都比原來縮小了1px,這縮小出來的鄭剛是上面一個item的邊框的左、右、下邊框 21 而top沒有縮小,所以覆蓋了上面一個item的邊框的上邊框。 22 所以這個item疊加上面一個item之后的效果就是一個只含左、右、下灰色邊框,下面帶圓角,上面不帶圓角的白色背景矩形 23 --> 24 <item android:right="1px" android:left="1px" android:bottom="1px"> 25 <shape> 26 <corners android:bottomLeftRadius="5dp" 27 android:bottomRightRadius="5dp" /> 28 <solid android:color="@color/white" /> 29 </shape> 30 </item> 31 </layer-list>
layer-lsit的用法注釋中也講的比較詳細。
然后在View中設置背景為改drawable即可。