2013-05-02 2 views
9

사용자 지정 drawable resource의 Button에서 채우기를 변경하려고하고 선택기에서 다시 사용하려고합니다. 드로어 블을 변경 하지 문제를 보이지만 앱은 항상 다른 드로어 블에서 가장 높은 패딩 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로만 작동하도록하는 방법이 있습니까? 아니면 프로그래밍 방식으로 사용자 지정 Button을 만드는 것이 더 좋습니까?

+0

나는 드로어 블 버튼 중 하나를 사용해 보았습니다. 정상적인 패딩은 패딩이없고 패딩을 추가했습니다. 정상적인 것을 표시 할 때도 눌러 진 패딩을 사용합니다. 나는 또한 같은 방식으로 사용하고있는 .png 파일에 문제가있다. 나는 눌린 것을 보통보다 크게 만들었지 만, 크기는 변하지 않습니다. 이건 안됐다. –

+0

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

답변

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은 버그가있는 atribute로 작동하지 않습니다. – ElSajko