2013-05-02 53 views
9

我正在嘗試更改自定義drawable資源中的按鈕的填充,並在選擇器中重新使用它。 更改繪製似乎不是問題,但應用程序始終使用不同的可繪製最高填充aviable:更改選擇器中的填充drawable

button_inactive.xml

<?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="#FF4d681f" /> 
    </shape> 
</item> 
<item 
    android:bottom="2dp" 
    android:left="2dp" 
    android:right="2dp" 
    android:top="2dp"> 
    <shape android:shape="rectangle" > 
     <solid android:color="#FFFFFFFF" /> 

     <padding 
      android:bottom="5dp" 
      android:top="5dp" /> 
    </shape> 
</item> 

button_active.xml

<?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="#FF4D681F" /> 
    </shape> 
</item> 
<item 
    android:bottom="2dp" 
    android:left="2dp" 
    android:right="2dp" 
    android:top="2dp"> 
    <shape android:shape="rectangle" > 
     <solid android:color="#FF8da32d" /> 

     <padding 
      android:bottom="10dp" 
      android:top="10dp" /> 
    </shape> 
</item> 

button_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/button_active"/> 
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/button_active"/> 
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button_active"/> 
<item android:drawable="@drawable/button_inactive"/> 

的問題是,我的按鈕使用在所有國家10dp填充,其中包括「無效」狀態。

有沒有解決方案讓它只使用XML或者更好地編程自定義按鈕?

+0

我試着用我的一個可繪製的按鈕。正常的沒有填充,我添加填充到按下的一個。即使在顯示正常窗口時,它也會使用按下的填充。我也遇到了與我使用的.png文件相同的問題。我做了比正常的大,但大小不變。這很糟糕。 – 2013-11-10 02:37:57

+0

http://stackoverflow.com/a/19227057/1645319 – 2014-03-17 15:28:30

回答

4

試試這個

<solid android:color="#ffffff" /> 

<stroke 
    android:width="2dp" 
    android:color="@android:color/black" /> 

<padding 
    android:bottom="10dp" 
    android:left="10dp" 
    android:right="10dp" 
    android:top="10dp" /> 

<corners 
    android:bottomLeftRadius="6dp" 
    android:bottomRightRadius="6dp" 
    android:topLeftRadius="6dp" 
    android:topRightRadius="6dp" /> 

3

添加android:variablePadding="true"屬性的選擇。

我不確定在使用圖層列表時如何工作(但如果),但是我決定分享給任何尋找答案的人(因爲我是)。

+0

android:variablePadding是越野車的屬性,並從未工作。 – ElSajko 2016-02-08 14:38:27