J'essaye d'ajouter l'effet d'entraînement à l'élément de RecyclerView. J'ai jeté un coup d'œil en ligne, mais je n'ai pas trouvé ce dont j'avais besoin. Je suppose que cela doit être un effet personnalisé. J'ai essayé l'attribut android: background au RecyclerView lui-même et l'ai réglé sur "? Android: selectableItemBackground" mais cela n'a pas fonctionné .:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"
android:background="?android:selectableItemBackground"
android:id="@+id/recyclerView"
android:layout_below="@+id/tool_bar"/>
C'est le RecyclerView auquel j'essaie d'ajouter l'effet:
android
android-animation
android-recyclerview
Georgi Koemdzhiev
la source
la source
CardView
dans cette question qui ne se rapportent pas à cette question plus générale.Réponses:
J'ai découvert. La seule chose que j'avais à faire est d'ajouter cet attribut:
à l'élément racine de la mise en page que mon adaptateur RecyclerView gonfle comme ça:
Résultat:
Si vous ne parvenez toujours pas à voir l'effet d'entraînement, ajoutez également ces lignes à l'élément racine de la mise en page.
la source
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
aussi pour faire ce travailComme 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 çacustom_ripple
. Cliquez sur OK et collez le code suivant.custom_ripple.xml
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 écrivez21
pour le niveau d'API de plate - forme . Cliquez maintenant sur OK et collez le code suivant.v21 / custom_ripple.xml
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.
Dans l' exemple de projet avec lequel nous avons commencé, cela ressemble à ceci:
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.
la source
Je pense qu'il y a un petit détail qui manque.
Si vous n'obtenez toujours pas l'effet d'entraînement après l'ajout,
android:background="?android:attr/selectableItemBackground"
essayez d'ajouter ces lignes suivantes à la racine de la mise en page.Ceux-ci garantiront que la vue est cliquable et activeront l'effet d'entraînement avec l' attribut d' arrière - plan mentionné ci-dessus
la source
ajoutez ces lignes dans la vue racine xml de votre adaptateur
la source
Une approche simple et personnalisée consiste à définir un thème de vue comme indiqué ici .
some_view.xml
some_style.xml
D'autres implémentations personnalisées peuvent être trouvées ici .
la source
Utilisation d'un style de bouton
Cela a fonctionné pour moi d'innombrables.
Ajoutez le style de bouton sans bordure à l'élément racine de votre mise en page. Il n'y a pas besoin
focusable
ni d'clickable
attributs, le style par défaut encapsule tout cela pour vous.la source