Je développe une application Android sur laquelle j'utilise RecyclerView
. Je dois ajouter un diviseur dans RecyclerView
. J'ai essayé d'ajouter -
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
ci-dessous est mon code xml -
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
/>
android
android-recyclerview
material-design
sofquestion 8
la source
la source
Réponses:
Dans la mise à jour d'octobre 2016, la bibliothèque de support v25.0.0 dispose désormais d'une implémentation par défaut des séparateurs horizontaux et verticaux de base!
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
la source
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
puis revenez, sinon appelez la superclasse 'getItemOffsets()
.mLayoutManager.getOrientation()
, j'ai utiliséDividerItemDecoration.VERTICAL
et cela a fonctionné, car mon RecyclerView est vertical.@android:attr/listDivider
dans le thème de l'application n'affiche pas de séparateur s'il s'agit d'une ressource de couleur, j'ai dû créer une forme dessinable avec ma couleur avec une hauteur fixe.La bonne manière est de définir
ItemDecoration
leRecyclerView
est comme suitSimpleDividerItemDecoration.java
line_divider.xml:
Enfin définissez-le comme ceci
Éditer
Comme l'a souligné @Alan Solitar
est amorti au lieu de cela, vous pouvez utiliser
la source
Si vous souhaitez avoir des séparateurs horizontaux et verticaux:
Définissez les tiroirs du diviseur horizontal et vertical:
horizontal_divider.xml
vertical_divider.xml
Ajoutez ce segment de code ci-dessous:
la source
DividerItemDecoration
comme ceci:verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
ethorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Toutes ces réponses m'ont rapproché mais il leur manquait un détail clé. Après un peu de recherche, j'ai trouvé que le chemin le plus simple était une combinaison de ces 3 étapes:
Étape 1: lors de la configuration de RecyclerView
Étape 2: dans un fichier comme res / drawable / divider_gray.xml
Étape 3: dans le thème de l'application
EDIT: Mis à jour pour ignorer le dernier séparateur:
Après l'avoir utilisé un peu, j'ai réalisé qu'il dessinait un séparateur après le dernier élément, ce qui était ennuyeux. J'ai donc modifié l' étape 1 comme suit pour remplacer ce comportement par défaut dans DividerItemDecoration (bien sûr, créer une classe distincte est une autre option):
la source
for (int i = 0; i < childCount; i++)
for (int i = 0; i < childCount - 1; i++)
Ajoutez simplement une vue à la fin de votre adaptateur d'article:
la source
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
Ou il doit y avoir d'autres façons de le faire.1px
de la hauteur, est invisible à nos yeuxVoici le code d'un diviseur personnalisé simple (diviseur vertical / hauteur 1dp / noir):
Cela suppose que vous ayez une bibliothèque de support:
code java
puis l'exemple de fichier custom_divider.xml:
la source
Créez un fichier xml séparé dans le dossier res / drawable
Connectez ce fichier xml (votre_fichier) à l' activité principale , comme ceci:
la source
Version de Kotlin:
la source
Je pense que vous utilisez
Fragments
pour avoirRecyclerView
Ajoutez simplement ces lignes après avoir créé vos objets
RecyclerView
etLayoutManager
C'est tout!
la source
Essayez ce code simple sur une seule ligne
la source
Vous devez ajouter la ligne suivante ...
la source
La façon dont je gère la vue Divider et également les insertions Divider consiste à ajouter une extension RecyclerView.
1.
Ajoutez un nouveau fichier d'extension en nommant View ou RecyclerView:
et ajoutez la
setDivider
méthode d'extension dans le fichier RecyclerViewExtension.kt.2.
Créez un fichier de ressources Drawable à l'intérieur du
drawable
package commerecycler_view_divider.xml
:où vous pouvez spécifier la marge gauche et droite sur
android:insetLeft
etandroid:insetRight
.3.
Sur votre activité ou fragment où le RecyclerView est initialisé, vous pouvez définir le dessin personnalisé en appelant:
4.
Vive 🍺
la source
Donc, ce n'est peut-être pas la bonne façon, mais je viens d'ajouter une vue à la vue d'un seul élément de RecyclerView (car je ne pense pas qu'il y ait une fonction intégrée) comme ceci:
Cela signifie que chaque élément aura une ligne qui le remplira en bas. Je l'ai fait à environ 1dp de haut avec un
#111111
arrière - plan. Cela lui donne également une sorte d'effet "3D".la source
Vous pouvez créer un simple séparateur réutilisable.
Créer un séparateur:
Créer une ligne de séparation: divider.xml
Ajoutez un séparateur à votre Recyclerview:
Pour supprimer le séparateur du dernier élément:
Pour empêcher le dessin du séparateur pour le dernier élément, vous devez modifier cette ligne.
À
Votre implémentation finale devrait être comme ceci:
J'espère que ça aide:)
la source
RecyclerView-FlexibleDivider de yqritc en fait une doublure. Ajoutez d'abord ceci à votre
build.gradle
:Vous pouvez maintenant configurer et ajouter un diviseur où vous définissez l'adaptateur de votre recyclerView:
la source
HorizontalDividerItemDecoration
classe?Android rend les petites choses trop compliquées malheureusement. Le moyen le plus simple de réaliser ce que vous voulez, sans implémenter DividerItemDecoration ici:
Ajoutez une couleur d'arrière-plan à RecyclerView à la couleur de séparation souhaitée:
Ajoutez la marge inférieure (android: layout_marginBottom) à la racine de mise en page de l'élément (list_item.xml):
Cela devrait donner un espace de 1dp entre les éléments et la couleur d'arrière-plan de RecyclerView (qui est gris foncé apparaîtra comme séparateur).
la source
Pour rendre la réponse de NJ un peu plus simple, vous pouvez faire:
la source
Ajoutez simplement une marge de x au bas d'un article dans votre
RecycleView Adapter
.onCreateViewHolder
la source
Où
0
est Horizontale et1
Veritiquela source
Il vous suffit de spécifier une couleur dans R.drawable.divider_medium
et ajoutez-le à votre recycleur
refernce this
la source
La solution Bhuvanesh BS fonctionne. Version Kotlin de ceci:
la source
Je pense que c'est le moyen le plus simple
Notez que: myshape peut être rectangulaire avec la hauteur que vous voulez faire de votre diviseur
la source