Android使用buttonselect器的图层列表

我们如何使用图层列表作为button的绘图。 我有一个button:

<item android:state_pressed="true"> <shape> <gradient android:endColor="@color/white" android:startColor="@color/grey_blue_light" android:angle="90" /> <stroke android:width="1dp" android:color="@color/aqua_blue" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true"> </item> <item> </item> 

现在,当按下button状态时,我需要一个图层列表作为形状:

 <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="oval"> <solid android:color="@color/aqua_blue" /> </shape> </item> <item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp"> <shape android:shape="oval"> <solid android:color="@color/aqua_blue" /> </shape> </item> 

我们如何在buttonselect器中使用这个图层列表?

Step-1在drawable文件夹下为三种不同的button状态创build三个不同的layer_list xml。 例如,这些XML的名称是layer1.xml, layer2.xml, layer3.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="270" android:startColor="#0000ff" android:endColor="#0000dd" android:type="linear" /> </shape> </item> </layer-list> 

步骤2创build一个名为btn_background.xml的select器xml,并在drawable属性中传递layer_list xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/layer1"> </item> <item android:state_focused="true" android:drawable="@drawable/layer2"> </item> <item android:drawable="@drawable/layer3"> </item> </selector> 

步骤3将select器xml设置为buttonandroid:background="@drawable/btn_background"

只要用你的layer-listreplaceshape标签,一切都会正常工作。