Ich entwickle eine Android-Anwendung, in der ich verwende RecyclerView
. Ich brauche einen hinzuzufügen Teiler in RecyclerView
. Ich habe versucht hinzuzufügen -
recyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL_LIST));
Unten ist mein XML-Code -
<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
quelle
quelle
Antworten:
Im Oktober 2016-Update ist für die Support-Bibliothek v25.0.0 jetzt eine Standardimplementierung grundlegender horizontaler und vertikaler Teiler verfügbar!
https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html
quelle
if(parent.getChildAdapterPosition(view) == state.getItemCount() - 1)
dann kehre zurück, sonst rufe die Oberklasse angetItemOffsets()
.mLayoutManager.getOrientation()
ich verwendetDividerItemDecoration.VERTICAL
und es hat funktioniert, da mein RecyclerView vertikal ist.@android:attr/listDivider
im App-Thema zeigt keinen Teiler an, wenn es sich um eine Farbressource handelt. Ich musste eine Form erstellen, die mit meiner Farbe mit einer festen Höhe gezeichnet werden kann.Der richtige Weg ist,
ItemDecoration
für dasRecyclerView
folgende zu definierenSimpleDividerItemDecoration.java
line_divider.xml:
Stellen Sie es schließlich so ein
Bearbeiten
Wie von @Alan Solitar gezeigt
wird abgeschrieben, stattdessen können Sie verwenden
quelle
Wenn Sie sowohl horizontale als auch vertikale Teiler haben möchten:
Definieren Sie horizontale und vertikale Teiler-Drawables:
horizontal_divider.xml
vertikale_divider.xml
Fügen Sie dieses Codesegment unten hinzu:
quelle
DividerItemDecoration
diese wie folgt erstellen :verticalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.VERTICAL);
undhorizontalDecoration = new DividerItemDecoration(recyclerview.getContext(), DividerItemDecoration.HORIZONTAL);
.Alle diese Antworten haben mich nahe gebracht, aber ihnen fehlte jeweils ein wichtiges Detail. Nach ein wenig Recherche fand ich den einfachsten Weg, eine Kombination dieser drei Schritte zu sein:
Schritt 1: Während der Konfiguration von RecyclerView
Schritt 2: In einer Datei wie res / drawable / divider_gray.xml
Schritt 3: im Thema der App
BEARBEITEN: Aktualisiert, um den letzten Teiler zu überspringen:
Nachdem ich dies ein wenig verwendet hatte, stellte ich fest, dass nach dem letzten Element ein Teiler gezeichnet wurde, was ärgerlich war. Daher habe ich Schritt 1 wie folgt geändert , um dieses Standardverhalten in DividerItemDecoration zu überschreiben (natürlich ist das Erstellen einer separaten Klasse eine weitere Option):
quelle
for (int i = 0; i < childCount; i++)
for (int i = 0; i < childCount - 1; i++)
Fügen Sie einfach eine Ansicht am Ende Ihres Artikeladapters hinzu:
quelle
if(position == getItemCount() - 1) { mDividerView.setVisibility(View.INVISIBLE) }
Oder es muss andere Möglichkeiten geben, dies zu tun.1px
der Höhe für unsere Augen unsichtbarHier ist der Code für einen einfachen benutzerdefinierten Teiler (vertikaler Teiler / 1dp Höhe / schwarz):
Angenommen, Sie haben eine Support-Bibliothek:
Java-Code
dann das Beispiel der Datei custom_divider.xml:
quelle
Erstellen Sie eine separate XML-Datei im Ordner res / drawable
Verbinden Sie diese XML-Datei (Ihre_Datei) in der Hauptaktivität wie folgt :
quelle
Kotlin Version:
quelle
Ich denke, Sie verwenden
Fragments
zu habenRecyclerView
Fügen Sie diese Zeilen einfach hinzu, nachdem Sie Ihre
RecyclerView
undLayoutManager
Objekte erstellt habenDas ist es!
quelle
Probieren Sie diesen einfachen einzeiligen Code aus
quelle
Sie müssen die nächste Zeile hinzufügen ...
quelle
Die Art und Weise, wie ich mit der Teileransicht und auch mit Teilereinsätzen umgehe, besteht darin, eine RecyclerView-Erweiterung hinzuzufügen.
1.
Fügen Sie eine neue Erweiterungsdatei hinzu, indem Sie View oder RecyclerView benennen:
und fügen Sie die
setDivider
Erweiterungsmethode in die Datei RecyclerViewExtension.kt ein.2.
Erstellen Sie eine Drawable-Ressourcendatei innerhalb des
drawable
Pakets wie folgtrecycler_view_divider.xml
:Hier können Sie den linken und rechten Rand an
android:insetLeft
und angebenandroid:insetRight
.3.
In Ihrer Aktivität oder Ihrem Fragment, in dem die RecyclerView initialisiert ist, können Sie die benutzerdefinierte Zeichnungsfunktion festlegen, indem Sie Folgendes aufrufen:
4.
Prost 🍺
quelle
Dies ist möglicherweise nicht der richtige Weg, aber ich habe gerade eine Ansicht zur Einzelelementansicht der RecyclerView hinzugefügt (da ich nicht glaube, dass es eine integrierte Funktion gibt).
Dies bedeutet, dass jedes Element eine Zeile hat, die es am unteren Rand ausfüllt. Ich habe es ungefähr 1dp hoch mit einem
#111111
Hintergrund gemacht. Dies gibt ihm auch eine Art "3D" -Effekt.quelle
Sie können einen einfachen wiederverwendbaren Teiler erstellen.
Teiler erstellen:
Trennlinie erstellen: divider.xml
Fügen Sie Ihrem Recyclerview einen Teiler hinzu:
So entfernen Sie den Teiler für das letzte Element:
Um zu verhindern, dass für das letzte Element ein Teiler gezeichnet wird, müssen Sie diese Zeile ändern.
Zu
Ihre endgültige Implementierung sollte folgendermaßen aussehen:
Ich hoffe es hilft:)
quelle
Der RecyclerView-FlexibleDivider von yqritc macht dies zu einem Einzeiler . Fügen Sie dies zunächst zu Ihrem hinzu
build.gradle
:Jetzt können Sie einen Divder konfigurieren und hinzufügen, in dem Sie den Adapter Ihres recyclerView einstellen:
quelle
HorizontalDividerItemDecoration
Klasse?Android macht kleine Dinge leider nur zu kompliziert. Der einfachste Weg, um das zu erreichen, was Sie wollen, ohne DividerItemDecoration hier zu implementieren:
Fügen Sie der RecyclerView die Hintergrundfarbe zu Ihrer gewünschten Teilerfarbe hinzu:
Fügen Sie den unteren Rand (android: layout_marginBottom) zum Layout-Stammverzeichnis des Elements (list_item.xml) hinzu:
Dies sollte einen Abstand von 1 dp zwischen den Elementen und der Hintergrundfarbe von RecyclerView bieten (dunkelgrau wird als Teiler angezeigt).
quelle
Um die Antwort von NJ ein wenig zu vereinfachen, können Sie Folgendes tun:
quelle
Fügen Sie einfach einen Rand von x am unteren Rand eines Artikels in Ihrem hinzu
RecycleView Adapter
.onCreateViewHolder
quelle
Wo
0
ist horizontal und1
ist veriticalquelle
Sie müssen nur eine Farbe in R.drawable.divider_medium angeben
und fügen Sie es Ihrem recyclerView hinzu
Verweise darauf
quelle
Die Bhuvanesh BS-Lösung funktioniert. Kotlin-Version davon:
quelle
Ich denke, es ist der einfachste Weg
Beachten Sie Folgendes : myshape kann ein Rechteck mit der Höhe sein, die Sie zu Ihrem Teiler machen möchten
quelle