버튼을 누르고 있을 동안 색을 바꿔주는 효과를 넣고 싶을 때가 있습니다.
그럴 때 selector를 이용하게 되는데 주의할 점은 TextColor와 background 색을 변경하는 것이 조금 다릅니다.
TextColor는 res의 color 디렉토리를 생성하여 그 안에 selector를 넣어주어야 하고
background는 res의 drawable 디렉토리 안에 selector를 넣어주어야 합니다.
background 색을 변경할 때
button_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/bg_select"/>
<item android:state_focused="true" android:drawable="@drawable/bg_select"/>
<item android:state_pressed="true" android:drawable="@drawable/bg_select"/>
<item android:drawable="@drawable/bg"/>
</selector>
TextColor를 변경할 때
text_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/colorBlue"/>
<item android:state_focused="true" android:color="@color/colorBlue"/>
<item android:state_pressed="true" android:color="@color/colorBlue"/>
<item android:color="@color/colorWhite"/>
</selector>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="colorWhite">#FFFFFF</color>
<color name="colorBlue">#2196F3</color>
<drawable name="bg_select">#2196F3</drawable>
<drawable name="bg">#EEEEEE</drawable>
</resources>
activity_main.xml
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextViewTest"
android:textColor="@color/text_selector"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
android:text="ButtonTest"/>
'안드로이드' 카테고리의 다른 글
| 프로젝트 폴더를 복사 붙여넣기로 옮겨다니면서 작업할 때 나는 에러 (0) | 2018.01.03 |
|---|---|
| 엑셀파일 읽고, 쓰기위한 poi 라이브러리 추가하는 방법 (0) | 2017.04.10 |
| 안드로이드 마시멜로에서 BLE 스캔하기(1) - 런타임 퍼미션 주기 (0) | 2016.07.06 |