2016-06-30 2 views
1

상태 버튼 드로어 블을 이미지 버튼의 배경으로 사용하려고합니다.Android : 작업 할 상태 목록 드로어 블을 가져올 수 없습니다.

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

이미지 버튼은 다음과 같이이다 :

나는이 PNG 파일 enter image description here enter image description here

내 상태 목록 선택기를 사용하고있어이 같은입니다

<ImageButton 
      android:id="@+id/play_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:background="@drawable/play_button_bg" 
      /> 

하지만, 버튼이 커다란 이미지와 배경을 가지고있을 때 나타납니다. 아무 것도 클릭하지 않으면 아무 것도 나타나지 않습니다. 여기서 무엇이 잘못 될 수 있습니까?

답변

0

좋아,이 같은 계층 목록과 상태 목록 선택기를 사용하여 해결하기 위해 관리 :

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <layer-list> 
      <item> 
       <bitmap android:src="@drawable/play_button_pressed" android:gravity="center" /> 
      </item> 
     </layer-list> 
    </item> 
    <item android:state_focused="true"> 
     <layer-list> 
      <item> 
       <bitmap android:src="@drawable/play_button_pressed" android:gravity="center" /> 
      </item> 
     </layer-list> 
    </item> 
    <item android:drawable="@drawable/play_button_normal" /> 
</selector> 

비결은 비트 맵의에 있습니다 안드로이드 : 중력 = "센터"

0

코드에는 문제가 없습니다. 두 이미지가 동일하기 때문에 이미지 버튼을 클릭 할 때 아무런 변화가없는 것처럼 보입니다. 하나의 이미지를 다른 PNG로 변경하고 잠시 멈춤 버튼 이미지 &을 시도하십시오. 또한 ImageButton 대신 ImageView를 사용하십시오. 에

1

변화를 : 기본 스트레칭으로

<ImageButton 
     android:id="@+id/play_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:scaleType="center" 
     android:src="@drawable/play_button_bg" 
     android:background="@null"/> 

배경이보기에 맞게. 그래서 두 개의 버튼이 바뀌고 있습니다. 마지막 모습은 똑같습니다.

소스로 사용하고 "스케일없이 센터"로 스케일링하면 두 버튼이 바뀌어야합니다 (최종 효과가 예상했던 것과 다를 수도 있음).

모든 드로어 블이 같은 크기 인 경우 상태 드로어 블은 일반적으로 두통을 줄입니다.

관련 문제