Ich versuche, einen Abstand unterhalb der letzten Elementzeile RecyclerView
mit hinzuzufügen GridLayoutManager
. Ich habe ItemDecoration
für diesen Zweck benutzerdefinierte mit Bodenpolsterung verwendet, wenn das letzte Element wie folgt lautet:
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private int space;
private int bottomSpace = 0;
public SpaceItemDecoration(int space, int bottomSpace) {
this.space = space;
this.bottomSpace = bottomSpace;
}
public SpaceItemDecoration(int space) {
this.space = space;
this.bottomSpace = 0;
}
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
int childCount = parent.getChildCount();
final int itemPosition = parent.getChildAdapterPosition(view);
final int itemCount = state.getItemCount();
outRect.left = space;
outRect.right = space;
outRect.bottom = space;
outRect.top = space;
if (itemCount > 0 && itemPosition == itemCount - 1) {
outRect.bottom = bottomSpace;
}
}
}
Das Problem bei dieser Methode ist jedoch, dass die Elementhöhen im Raster in der letzten Zeile durcheinander gebracht wurden. Ich vermute, dass GridLayoutManager
sich die Höhen für Elemente basierend auf dem Abstand nach links ändern. Was ist der richtige Weg, um dies zu erreichen?
Dies funktioniert korrekt für a LinearLayoutManager
. Nur für den Fall, dass es GridLayoutManager
problematisch ist.
Dies ist sehr nützlich, wenn Sie ein FAB
In unten haben und Elemente in der letzten Zeile benötigen, um nach oben zu scrollen, FAB
damit sie sichtbar sind.
android:scrollbarStyle="outsideOverlay"
Sollte Dekoration in der Recycler-Ansicht nur für den unteren Rand für den unteren Rand verwenden
quelle
Ich hatte ein ähnliches Problem und antwortete auf einen anderen Thread im Stapelüberlauf. Um anderen zu helfen, die auf dieser Seite landen, werde ich sie hier erneut veröffentlichen.
Nachdem ich alle anderen Antworten gelesen hatte und festgestellt hatte, dass die Änderungen im Layout-XML für die Recycling-Ansicht erwartungsgemäß für meine Recycling-Ansicht funktionierten:
Das komplette Layout sieht aus wie:
Informationen zu den Auswirkungen von Vorher und Nachher finden Sie unter dem Link auf androidblog.us: Hinzufügen von Speicherplatz zum Ende von Android Recylerview
Lassen Sie mich wissen, wie es bei Ihnen funktioniert.
David
quelle
Mit dem folgenden Code können Sie die erste und letzte Zeile in einer Rasteransicht erkennen und die oberen und unteren Offsets entsprechend festlegen.
quelle
Sie können Ihrer Recycling-Ansicht eine leere Fußzeile hinzufügen. Ihre Polsterung entspricht der Größe Ihrer Fußzeile.
quelle
Bei solchen Dingen wird empfohlen, die ItemDecoration so zu lösen, wie sie dafür vorgesehen ist.
Ich habe hier eine bearbeitete aus meiner ursprünglichen Antwort kopiert , die eigentlich für gleichen Abstand ist, aber es ist das gleiche Konzept.
quelle
Sie können DividerItemDecoration.java als Beispiel aus dem Quellcode nehmen und ersetzen
mit
in drawVertical () und drawHorizontal ()
quelle