Android支持自定義Shape, 以畫出需要的形狀,可以作為TextView, EditText, Button的背景drawable資源。Shape很簡單,就是一個XML文件,SDK文檔裡描述其格式如下:
- <?xml version="1.0" encoding="utf-8"?>
- <shape
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape=["rectangle" | "oval" | "line" | "ring"] >
- <corners
- android:radius="integer"
- android:topLeftRadius="integer"
- android:topRightRadius="integer"
- android:bottomLeftRadius="integer"
- android:bottomRightRadius="integer" />
- <gradient
- android:angle="integer"
- android:centerX="integer"
- android:centerY="integer"
- android:centerColor="integer"
- android:endColor="color"
- android:gradientRadius="integer"
- android:startColor="color"
- android:type=["linear" | "radial" | "sweep"]
- android:usesLevel=["true" | "false"] />
- <padding
- android:left="integer"
- android:top="integer"
- android:right="integer"
- android:bottom="integer" />
- <size
- android:width="integer"
- android:height="integer" />
- <solid
- android:color="color" />
- <stroke
- android:width="integer"
- android:color="color"
- android:dashWidth="integer"
- android:dashGap="integer" />
- </shape>
其支持的屬性沒有shadow, 做Web前端開發的同學寫CSS可以很方便地加一個shadow屬性值,如何給Android Shape加一個shadow,以得到類似的效果呢?
答案是使用layer-list ! 直接上代碼如下:
- <?xml version="1.0" encoding="utf-8"?>
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item>
- <shape android:shape="rectangle">
- <solid android:color="#792a03" />
- <corners android:radius="19dp" />
- </shape>
- </item>
-
- <item android:top="1px">
- <shape android:shape="rectangle">
- <gradient android:startColor="#ffdb8f" android:endColor="#ffdb8f"
- android:angle="270" />
- <padding android:left="5dp" android:top="3dp" android:right="5dp"
- android:bottom="3dp" />
- <corners android:radius="20dp" />
- </shape>
-
- </item>
-
- </layer-list>
將以上xml存成btn_test, 放到res/drawable/目錄下。 將該drawable xml設為一個TextView的backgroiund,
- <TextView
- android:background="@drawable/btn_test"
-
- android:layout_marginTop="20dip"
- android:layout_marginLeft="5dip"
- android:textColor="#792a03"
-
- android:text="1天2小時14分20秒"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />