본문 바로가기

Android

버튼 셀렉터, 텍스트 셀렉터 (button selector, textColor selector)

버튼 선택 시에 백그라운드로 이미지를 주면 클릭시에 변화가 없기 때문에 어떠한 곳을 클릭하였는지 알 수 없다. 따라서 이미지를 교체 해 주어야 하는데 xml로 교체될 이미지를 지정 해 놓으면 이미지가 클릭시와 포커스를 갖을 때 바뀐는 것을 볼 수 있다. 텍스트 또한 클릭 이벤트를 사용 할 때 백그라운드나 색상을 바꿀 수 있다. xml은 drawable폴더에 저장한다. 

버튼 셀렉터 

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_icon_fontsize_over" android:state_pressed="true"/> <!-- pressed -->

    <item android:drawable="@drawable/btn_icon_fontsize_over" android:state_focused="true"/> <!-- focused -->

    <item android:drawable="@drawable/btn_icon_fontsize"/> <!-- default -->

</selector>

 
버튼은 android:background 또는 setBackgroundResource 로 등록해야 한다.

텍스트 색상 셀렉터

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/progream_bace_color2" android:state_pressed="true"/> <!-- pressed -->

    <item android:color="@color/progream_bace_color2" android:state_focused="true"/> <!-- focused -->

    <item android:color="@color/progream_bace_color1"/> <!-- default -->

</selector> 

 
컬러는 color.xml에 지정한것을 사용 하거나 직접 rgb값을 주어도 된다. 버튼에  background에 지정하는 것과는 다르게 색상이라면 android:textColor 또는 setTextColor에 넣어야 한다.

응용편

스타일 또한 클릭시에 바꿀 수 있다.

이부분에 대한 출처 
(http://stackoverflow.com/questions/2682051/android-how-to-make-button-text-bold-when-pressed-or-focussed)

<style name="myStyle">  
   
<item name="android:textSize">9px</item>
   
<item name="android:gravity">center_horizontal</item>
   
<item name="android:textColor">#fff</item>
   
<item name="android:textStyle">bold</item>
</style>

 

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