상태값에 따라 다른 이미지를 적용하고 싶을 때 selector 를 이용하는데요.

버튼 enabled 값이 false (disabled) 상태일 때 이미지가 제대로 적용되지 않아 확인해보니 XML이 아래와 같았습니다.


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_on" android:state_selected="true"></item>
    <item android:drawable="@drawable/button_off" android:state_selected="false"></item>
    <item android:drawable="@drawable/button_dimmed" android:state_enabled="false"></item>

</selector>



XML 내용을 보면 state_enable="false" 를 포함한 항목이 제일 아래에 있는데요

selected 상태보다 enabled 값이 우선적으로 처리되어야 하기 때문에 이 항목을 위쪽으로 올려주어야 합니다.


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_dimmed" android:state_enabled="false"></item>
    <item android:drawable="@drawable/button_on" android:state_selected="true"></item>
    <item android:drawable="@drawable/button_off" android:state_selected="false"></item>

</selector>


이와같이.. 항목의 우선순위가 적용되는지 처음 알았네요... (알아서 좀 해주면 안되겠니!?)

+ Recent posts