54 votes

Arrière-plan par défaut du sélecteur dans les vues cliquables

J'ai quelques vues cliquables et je veux définir le fond disponible par défaut qui est présent lors d'un clic sur la liste (dans ICS, c'est une couleur bleue). J'ai essayé de mettre comme arrière-plan ceci :

android:background="@android:drawable/list_selector_background"

mais ce n'est pas le bleu que j'ai par défaut (celui que j'ai utilisé est orange). Quel est le drawable utilisé par défaut sur Android comme sélecteur de clic ?

Gracias

177voto

Bogdan Piloca Points 1048

Cela fonctionne pour moi :

android:background="?android:attr/selectableItemBackground"

21voto

Alex Curran Points 4627

C'est list_selector_holo_dark ou la version holo light équivalente ; ce sont les valeurs par défaut dans Honeycomb et les versions supérieures. list_selector_background est la version nonholo, utilisée dans les versions Gingerbread et inférieures.

EDIT : I croire (mais ne peut pas confirmer) que le sélecteur agnostique de plateforme est ?android:attr/listSelector

12voto

idunnololz Points 608

Si vous utilisez appcompat-v7 vous pouvez simplement utiliser ?attr/selectableItemBackground .

8voto

flx Points 6617

Il existe un moyen de combiner toutes les réponses valides :

Définir un attribut (par exemple, dans values/attrs.xml) :

<attr name="clickableItemBackground" format="reference"/>

Dans la section de votre thème dépendant de la plate-forme (par exemple, dans values/styles.xml ou values/themes.xml), déclarez ceci :

<style name="Theme.Platform" parent="@android:style/Theme.Whatever">
        <item name="clickableItemBackground">@android:drawable/list_selector_background</item>
</style>

Dans la section de votre thème dépendant de la plate-forme pour api-11+ (par exemple, dans values-v11/styles.xml ou values-v11/themes.xml), déclarez ceci :

<style name="Theme.Platform" parent="@android:style/Theme.Holo.Whatever">
        <item name="clickableItemBackground">?android:attr/selectableItemBackground</item>
</style>

Ensuite, utilisez ?attr/clickableItemBackground partout où cela est nécessaire.

6voto

Aleksejs Mjaliks Points 3340

Une solution similaire à la réponse de flx, mais sans définition d'attribut supplémentaire.

Style indépendant de la plateforme utilisé pour les dispositifs pré-Holo (en res\values\styles.xml ):

<style name="SelectableItem">
    <item name="android:background">@android:drawable/list_selector_background</item>
</style>

Style pour les dispositifs Holo (Niveau API 14+) (en res\values-v14\styles.xml ):

<style name="SelectableItem">
    <item name="android:background">?android:attr/selectableItemBackground</item>
</style>

Appliquer un style à la vue requise, par exemple, LinearLayout :

<LinearLayout
    style="@style/SelectableItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
...
</LinearLayout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X