당신이 법의학 분위기에 있다면 여기에서 무슨 일이 일어나고 있는지 파고 찾는 방법이 있습니다.
android:background="?android:attr/activatedBackgroundIndicator"?
직관적으로 이것은 배경을 드로어 블로 설정하는 것을 의미합니다.
그러나 이것을 더 분해하여 신비한 드로어 블에 도달하는 방법을 살펴 보겠습니다.
정확히 말하면 "배경 속성을"activatedBackgroundIndicator "속성 이 현재 테마에서 참조하는 것으로 설정하는 것을 의미합니다 .
"현재 주제에서 참조"부분을 이해했다면 기본적으로 커버 뒤에서 진행되는 모든 것을 이해 한 것입니다.
기본적으로 activateBackgroundIndicator는 실제 드로어 블이 아니라 드로어 블에 대한 참조 입니다. 그렇다면 "activateBackgroundIndictor"속성은 실제로 어디에 정의되어 있습니까?
파일 이름 attrs.xml 의 sdk 디렉토리에 정의되어 있습니다 . 예를 들면 :
path_to_android_sdk / platforms / android-17 / data / res / values / attrs.xml
해당 파일을 열면 다음과 같이 선언됩니다.
<attr name="activatedBackgroundIndicator" format="reference" />
attrs.xml은 나중에보기 xml에서 사용할 모든 속성을 선언하는 곳입니다. 우리는 속성과 그 유형을 선언하고 실제로 여기에 값을 할당하지 않습니다 .
실제 값은 themes.xml에 할당됩니다 . 이 파일은 다음 위치에 있습니다.
path_to_android_sdk / platforms / android-17 / data / res / values / themes.xml
해당 파일을 열면 사용중인 테마에 따라 여러 정의가 표시됩니다 . 예를 들어 다음은 테마 이름 Theme, Theme.Light, Theme.Holo, Theme.Holo.Light에 대한 정의입니다.
<item name="activatedBackgroundIndicator">@android:drawable/activated_background</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_light</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_dark</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_light</item>
이제 우리는 신비한 드로어 블을 가지고 있습니다. 첫 번째 항목을 선택하면 다음 위치의 드로어 블 폴더에 정의됩니다.
path_to_android_sdk / platforms / android-17 / data / res / drawable / activated_background.xml
해당 파일을 열면 무슨 일이 일어나고 있는지 이해하는 데 중요한 드로어 블의 정의가 표시됩니다.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@android:drawable/list_selector_background_selected" />
<item android:drawable="@color/transparent" />
</selector>
여기서 우리는 두 가지 상태로 드로어 블을 정의합니다. 기본 상태는 투명한 배경이고 상태가 "state_activated"이면 드로어 블은 "list_selector_background_selected"입니다.
드로어 블 및 상태에 대한 배경 정보는 이 링크 를 참조하십시오 .
"list_selector_background_selected"는 drawable-hdpi 폴더에있는 9 패치 png 파일입니다.
이제 드로어 블 파일에 직접 연결하지 않고 ActivateBackgroundIndicator를 참조로 정의한 이유를 알 수 있습니다. 테마에 따라 올바른 드로어 블을 선택할 수 있습니다.