2014-11-21 78 views
3

我有一個按鈕,我將其背景設置爲具體的selector
選擇器當前更改按鈕背景並將圖像更改爲背景。
我也想要改變背景顏色(圖像是周圍有透明空間的圖標)。
這是選擇:Android:使用選擇器更改按鈕背景圖像和顏色

<?xml version="1.0" encoding="utf-8"?> 
     <selector 
      xmlns:android="http://schemas.android.com/apk/res/android" > 
     <!-- default --> 
     <item 
      android:state_pressed="false" 
      android:state_focused="false" 
      android:drawable="@drawable/menu_button_collapsed" > 
     </item> 

     <!-- button focused --> 
     <item 
      android:state_pressed="false" 
      android:state_focused="true" 
      android:drawable="@drawable/menu_button_collapsed_highlight" 
      android:drawable="@drawable/button_background" > 
     </item> 

     <!-- button pressed --> 
     <item 
      android:state_pressed="true" 
      android:state_focused="false" 
      android:drawable="@drawable/menu_button_collapsed_highlight" 
      android:drawable="@drawable/button_background" > 
     </item> 
    </selector> 

正如你所看到的,我設置了drawable屬性的兩倍,這是違法的,但是這是我真正想要的。
通知@drawable/button_background只是顏色

回答

3

創建一個新的<layer-list>繪製

custom_button.xml

<?xml version="1.0" encoding="utf-8"?>   
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

      <!-- Your background color goes first --> 
      <item 
      android:id="@android:id/background" 
      android:drawable="@drawable/button_background" /> 

      <!-- Your button icon image --> 
      <item 
      android:id="@android:id/button_image" 
      android:drawable="@drawable/menu_button_collapsed_highlight" /> 

     </layer-list> 

而在你的選擇中引用它繪製文件

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android" > 

     <!-- default --> 
     <item 
      android:state_pressed="false" 
      android:state_focused="false" 
      android:drawable="@drawable/menu_button_collapsed" 
     />    

     <!-- button focused --> 
     <item 
      android:state_pressed="false" 
      android:state_focused="true" 
      android:drawable="@drawable/custom_button" 
      /> 

     <!-- button pressed --> 
     <item 
      android:state_pressed="true" 
      android:state_focused="false" 
      android:drawable="@drawable/custom_button" 
     /> 
    </selector> 
+0

謝謝你,偉大工程。 – SagiLow 2014-11-21 17:50:35

0

<!-- default --> 
<item 
    android:state_pressed="false" 
    android:state_focused="false"> 
    <shape 
     android:innerRadiusRatio="1" 
     android:shape="rectangle" > 
     <solid android:color="#01AF7E" /> 
     <corners 
      android:bottomLeftRadius="5dp" 
      android:bottomRightRadius="5dp" 
      android:radius="5dp" 
      android:topLeftRadius="5dp" 
      android:topRightRadius="5dp"></corners> 
     <padding 
      android:bottom="10dp" 
      android:left="10dp" 
      android:right="10dp" 
      android:top="10dp" /> 

    </shape></item> 

<!-- button focused --> 
<item 
    android:state_pressed="false" 
    android:state_focused="true"> 
    <shape 
     android:innerRadiusRatio="1" 
     android:shape="rectangle" > 
     <solid android:color="#8001AF7E" /> 
     <corners 
      android:bottomLeftRadius="5dp" 
      android:bottomRightRadius="5dp" 
      android:radius="5dp" 
      android:topLeftRadius="5dp" 
      android:topRightRadius="5dp"></corners> 
     <padding 
      android:bottom="10dp" 
      android:left="10dp" 
      android:right="10dp" 
      android:top="10dp" /> 

    </shape></item> 

<!-- button pressed --> 
<item 
    android:state_pressed="true" 
    android:state_focused="false"> 
    <shape 
     android:innerRadiusRatio="1" 
     android:shape="rectangle" > 
     <solid android:color="#8001AF7E" /> 
     <corners 
      android:bottomLeftRadius="5dp" 
      android:bottomRightRadius="5dp" 
      android:radius="5dp" 
      android:topLeftRadius="5dp" 
      android:topRightRadius="5dp"></corners> 
     <padding 
      android:bottom="10dp" 
      android:left="10dp" 
      android:right="10dp" 
      android:top="10dp" /> 

    </shape></item> 

+0

請問您能否爲您解決問題添加一些解釋? – ry8806 2015-08-13 13:32:33