2013-05-02 59 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