ColorStateList
는 XML로 정의할 수 있는 객체로 색상으로 적용할 수 있지만 실제로 색상이 적용되는 View
객체의 상태에 따라 색상을 변경합니다. 예를 들어, Button
위젯은 여러 상태(눌리거나 포커스가 있거나 혹은 둘 다 아닌 상태) 중 하나로 존재할 수 있는데 색상 상태 목록을 사용하면 각 상태에 다른 색상을 제공할 수 있습니다.
XML 파일에 상태 목록을 설명할 수 있습니다. 각 색상은 단일 <selector>
요소 내 <item>
요소에 정의됩니다. 각 <item>
은 다양한 속성을 사용하여 색상이 사용된 상태를 설명합니다.
각 상태가 변경되는 동안 상태 목록은 위에서 아래로 순회하고 현재 상태와 일치하는 첫 번째 항목이 사용됩니다. 선택 항목은 '가장 일치'하는 항목이 아니라 상태의 최소 기준을 충족하는 첫 번째 항목입니다.
참고: 정적 색상 리소스를 제공하려면 간단한 색상 값을 사용하세요.
- 파일 위치:
res/color/filename.xml
파일 이름은 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
ColorStateList
을 가리키는 리소스 포인터입니다.- 리소스 참조:
-
Java의 경우:
R.color.filename
XML의 경우:@[package:]color/filename
- 문법:
-
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="hex_color" android:lStar="floating_point_value" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
- 요소:
- 예:
res/color/button_text.xml
에 저장된 XML 파일:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector>
다음 레이아웃 XML은 색상 목록을
View
에 적용합니다.<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" android:textColor="@color/button_text" />
- 참고 항목: