2013-05-02 9 views
9

Próbuję zmienić dopełnienie z przycisku w niestandardowym zasobie losowym, a następnie użyć go ponownie w selektorze. Zmiana rozciągliwej nie wydaje się być problemem, ale zawsze korzystać z App najwyższy dopełnienie aviable z różnych kanału alfa:Zmiana dopełnienia w selektorze do rysowania

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"/> 

Problem polega na tym, że moja Przycisk używa padding 10dp we wszystkich krajach, w tym "nieaktywnego" stanu.

Czy istnieje rozwiązanie, aby działało tylko z XML lub lepiej jest zaprogramować niestandardowy przycisk?

+0

Próbowałem go z jednym z moich przycisków do rysowania. Normalny nie ma dopełnienia, a ja dodałem dopełnienie do wciśniętego. Używa wypełnienia z wciśniętego, nawet podczas wyświetlania normalnego. Mam również problem z plikami .png używam w taki sam sposób. Nacisnąłem większy niż normalny, ale rozmiar się nie zmienia. To jest do bani. –

+0

http://stackoverflow.com/a/19227057/1645319 –

Odpowiedz

4

spróbować

<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

Dodaj atrybut android:variablePadding="true" do selektora.

Nie jestem pewien jak (i ​​czy) to działa, gdy korzystasz z listy warstw, jednak zdecydowałem się ją udostępnić każdemu, kto szuka odpowiedzi (tak jak ja).

+0

android: variablePadding jest błędnym atrybutem i nigdy nie działał. – ElSajko

Powiązane problemy