본문 바로가기

Android/Knowhow

LinearLayout background에 selector 입혀주기

selector에 이미지 리소스가 아닌 단순 컬러값만 주고 싶은데, inflate 에러가 발생한다.


1
<item android:color="#ffffff"/>
cs





검색해보니 color 태그를 사용하면 안되고 drawable 태그를 사용해야 한다.


또, 컬러값도 colors.xml 에 drawable 태그로 저장한것을 불러오는 형식으로 사용해야 한다.



1
2
3
### colors.xml ###

<drawable name="item_background_n">#eaeaea</drawable>
<drawable name="item_background_p">#cfcfcf</drawable>

cs


1
2
3
4
5
6
7
8
9
10
### selector.xml ###
 
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
 android:exitFadeDuration="@android:integer/config_shortAnimTime">
 
    <item android:state_pressed="true" android:drawable="@drawable/item_background_p" />
    <item android:state_focused="true" android:drawable="@drawable/item_background_p"/>
    <item android:drawable="@drawable/item_background_n"/>
 
</selector>
cs



1
2
3
### layout.xml ###

<LinearLayout 
       ...
       android:background="@drawable/item_cell_selector">
cs






selector에 이미지 리소스를 입히던 컬러값을 입히던, 항상 drawable 태그를 사용하면 된다!


selector에 컬러값을 입히려면 colors.xml 에 drawable 태그로 등록해야 한다!


그냥 전부 drawable 태그만 사용하면 된다! color 태그를 사용할 일이 없다!






출처 https://chrisjhyoon.wordpress.com/2014/10/24/color-%EB%A5%BC-drawable-%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0selector-%EB%A6%AC%EC%86%8C%EC%8A%A4%EB%82%B4%EC%97%90%EC%84%9C/