Comme déjà répondu, la solution la plus simple consiste simplement à ajouter l'un des éléments suivants comme RecyclerView
arrière-plan de votre ligne:
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Cependant, si vous rencontrez des problèmes avec cette méthode ou si vous souhaitez un contrôle plus fin sur les couleurs, vous pouvez effectuer les opérations suivantes.
Effet d'ondulation personnalisé
Cette réponse commence par cet exemple simple d'Android RecyclerView . Cela ressemblera à l'image suivante.
Ajouter un sélecteur pour les appareils pré-API 21
Avant l'API 21 (Android 5.0 Lollipop), le fait de cliquer sur un RecyclerView
élément modifiait simplement sa couleur d'arrière-plan (pas d'effet d'entraînement). C'est aussi ce que nous allons faire. Si vous avez toujours des utilisateurs avec ces appareils, ils sont habitués à ce comportement, nous n'allons donc pas trop nous en préoccuper. (Bien sûr, si vous voulez vraiment l'effet d'entraînement pour eux aussi, vous pouvez utiliser une bibliothèque personnalisée .)
Cliquez avec le bouton droit sur votre res/drawable
dossier et choisissez Nouveau> Fichier de ressources dessinables . Appelez ça custom_ripple
. Cliquez sur OK et collez le code suivant.
custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>
J'ai utilisé colorAccent
comme couleur de surbrillance pour l'état pressé car elle était déjà disponible, mais vous pouvez définir la couleur de votre choix.
Ajouter un effet d'entraînement pour les appareils API 21+
Cliquez avec le bouton droit sur votre res/drawable
dossier et choisissez Nouveau> Fichier de ressources dessinables . Appelez à custom_ripple
nouveau. Ne cliquez pas sur OK, cette fois, cependant. Dans la liste des qualificatifs disponibles, choisissez Version , puis cliquez sur le bouton >> et écrivez 21
pour le niveau d'API de plate - forme . Cliquez maintenant sur OK et collez le code suivant.
v21 / custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorAccent">
<item
android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
Encore une fois, j'ai utilisé colorAccent
la couleur ondulée car elle était disponible, mais vous pouvez utiliser la couleur de votre choix. Le masque limite l'effet d'entraînement uniquement à la disposition des lignes. La couleur du masque n'a apparemment pas d'importance , j'ai donc juste utilisé un blanc opaque.
Définir comme arrière-plan
Dans la disposition racine de votre élément RecyclerView, définissez l'arrière-plan sur l'ondulation personnalisée que nous avons créée.
android:background="@drawable/custom_ripple"
Dans l' exemple de projet avec lequel nous avons commencé, cela ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/custom_ripple"
android:padding="10dp">
<TextView
android:id="@+id/tvAnimalName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
Fini
C'est tout. Vous devriez pouvoir exécuter votre projet maintenant. Merci à cette réponse et à cette vidéo YouTube pour obtenir de l'aide.
CardView
dans cette question qui ne se rapportent pas à cette question plus générale.