Si vous êtes dans un forensic ambiance ici est de savoir comment creuser et de trouver ce qui se passe.
android:background="?android:attr/activatedBackgroundIndicator"?
Intuitivement, cela signifie définir l'arrière-plan de certains drawable.
Mais permet de décomposer cet plus loin pour voir comment nous arrivons à notre mystérieux drawable.
Pour être précis, il signifie "définir l'attribut background à ce que l'attribut "activatedBackgroundIndicator" se réfère dans le thème actuel.
Si vous comprenez "désigne dans le thème actuel" partie, vous avez compris tout ce qui se passe derrière les couvertures.
Fondamentalement, activatedBackgroundIndicator est pas un drawable, mais une référence à un drawable. Alors, où est "activateBackgroundIndictor" attribut définit?
Ses définis dans votre répertoire sdk dans un nom de fichier attrs.xml. Par exemple:
path_to_android_sdk/plates-formes/android-17/data/res/values/attrs.xml
Si vous ouvrez ce fichier, vous aurez la déclaration comme suit:
<attr name="activatedBackgroundIndicator" format="reference" />
attrs.xml est l'endroit où vous déclarer tous les attributs que vous êtes va utiliser dans votre affichage xml. Remarque nous déclarer l'attribut et de son type et n'est pas réellement l'attribution d'une valeur ici.
La valeur réelle est affecté dans themes.xml. Ce fichier se trouve dans:
path_to_android_sdk/plates-formes/android-17/data/res/values/themes.xml
Si vous ouvrez ce fichier, vous allez voir les multiples définitions en fonction du thème que vous utilisez. Par exemple, voici les définitions de thèmes de nom de Thème, le Thème.La Lumière, Thème.Holo, Thème.Holo.La lumière respectivement:
<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>
Maintenant que nous avons notre mystérieux un drawable. Si vous choisissez la première, elle est définie dans le dossier drawable:
path_to_android_sdk/plates-formes/android-17/data/res/drawable/activated_background.xml
Si vous ouvrez ce fichier, vous trouverez la définition de la drawable qui est important de comprendre ce qui se passe.
<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>
Ici, nous sommes à la définition d'une dessinés avec deux états - l'état par défaut est juste un fond transparent, et si l'état est "state_activated" alors notre drawable est "list_selector_background_selected".
voir ce lien pour plus d'information sur sur un drawable et les états.
"list_selector_background_selected" est un 9 patch fichier png qui se trouve dans le drawable-hdpi dossier.
Maintenant vous pouvez voir pourquoi nous avons défini activatedBackgroundIndicator comme référence plutôt que les reliant directement à la drawable de fichier, il vous permet de choisir le droit dessinés en fonction de votre thème.