Je veux ajouter des lignes de séparation dans mon RecyclerView
Layout
. J'ai déjà cherché quelque temps, mais je ne trouve que des solutions qui utilisent RecyclerView.addItemDecoration
, qui ajoute le séparateur entre tous les éléments. Je pourrais créer une mise en page qui a une seule ligne et l'ajouter à la RecyclerView
, mais cela ne me semble pas être une solution élégante.
Réponses:
2 pour la réponse № 1Vous pouvez écrire une coutume RecyclerView.ItemDecoration
et dessinez le séparateur uniquement là où vous en avez besoin. Et réglez-le sur RecyclerView
en utilisant:
recyclerView.addItemDecoration(new YourItemDecoration());
C'est la valeur par défaut DividerItemDecoration
code source:
https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v7/recyclerview/src/android/support/v7/widget/DividerItemDecoration.java
Vous pouvez trouver la logique de dessin du diviseur dans onDraw
, où il dessine un séparateur pour tous les éléments. Vous devez modifier cette partie en fonction de vos besoins pour dessiner un séparateur pour certains articles uniquement. getItemOffsets()
ajoute un décalage à l'élément pour libérer de l'espace pour le séparateur.
1 pour la réponse № 2
DividerItemDecoration myDivider = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL);
divider.setDrawable(ContextCompat.getDrawable(context, R.drawable.cutm_dvdr));
yourRecyclerView.addItemDecoration(myDivider );
ajoutez cutm_dvdr.xml dans le dossier drawble
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<size android:height="1dp" />
<solid android:color="#e20" />
</shape>
0 pour la réponse № 3
vous pouvez ajouter une vue personnalisée dans la disposition des éléments de ligne de la vue recycleur et définir la visibilité visible ou disparaître dans l'adaptateur quel élément de ligne que vous souhaitez aligner, vous pouvez définir.
-1 pour la réponse № 4
DividerItemDecoration recycleViewDivider = newDividerItemDecoration (contexte, DividerItemDecoration.VERTICAL); recycleViewDivider.setDrawable (ContextCompat.getDrawable (contexte, R.drawable.recycleview_item_divider));
et ajoutez ce DividerItemDecoration à vous RecycleView RecyclerView.addItemDecoration (recycleViewDivider);