web-dev-qa-db-fra.com

Android comment rendre la vue en surbrillance lorsque vous cliquez dessus?

J'ai une disposition linéaire dans laquelle chaque ligne est gonflée par programme et je veux que les lignes se comportent comme ListView lorsque vous cliquez dessus. Autrement dit, je veux que la ligne soit mise en surbrillance de la même manière/couleur que le ListView par défaut. Comment pourrais-je procéder?

39
Kman

Ok, j'ai finalement compris comment faire cela ... en gros, cela se fait en utilisant un sélecteur comme le sélecteur de couleur lié par style, sauf qu'au lieu de 'color', utilisez un dessinable pour les états et vous pouvez vous référer à la liste par défaut dessinable qui est utilisé dans ListView par ceci:

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true"
    Android:drawable="@Android:drawable/list_selector_background" />      
</selector>

et en utilisant ce xml comme arrière-plan pour ma vue.

Tous les drawables par défaut publics peuvent être trouvés ici: http://developer.Android.com/reference/Android/R.drawable.html

57
Kman

J'ai pu faire de même avec une vue texte que je voulais me comporter comme un élément de liste en utilisant:

<Textview
....
Android:background="@Android:drawable/list_selector_background"
/>
23
davenpcj

This pourrait être un bon endroit pour commencer à chercher.

Cependant, je vous conseille d'utiliser le ListView lui-même, plutôt que de le réimplémenter.

2
st0le

si vous avez toujours un problème avec cela, n'oubliez pas que certains éléments de l'interface utilisateur ne sont pas cliquables (RelativeLayout), vous devez donc ajouter une ligne de plus:

<RelativeLayout 
    ....
    Android:clickable="true"
    ...
2
Dany

À votre propriété set listview

Android:listSelector="@color/test"

et cette couleur de test définit n'importe quelle couleur transparente que vous aimez. vous pouvez créer n'importe quelle couleur transparente en utilisant couleur transparente hexadécimale

1
SAndroidD