Ich möchte ein Leerzeichen zwischen Elementen im Raster erstellen. Die Elemente sollten alle die gleiche Breite / Höhe haben.
Was ich versucht habe:
Erstellen Sie ein GridLayoutOffsetDecorator
, das einen Offset auf alle Rasterelemente anwendet:
Mit einem Offset von 8dp
wird ein 16dp
Leerzeichen zwischen den Elementen erstellt. Also müssen wir noch 8dp
of padding auf die äußeren Kanten anwenden:
Das Ergebnis ist:
Problem: Die Elemente sind nicht gleich groß:
Sie bemerken einen leichten Höhenunterschied, wenn Sie auf die blaue Linie schauen. Dieser Unterschied wird erst nach dem Füllen der Recycler-Ansicht angezeigt. Diese Polsterung scheint einige der Elemente leicht zu verändern. Habt ihr irgendwelche Erfahrungen mit diesem Problem? Irgendeine Idee, wie das gelöst werden kann?
Wenn Sie das Bild von den Objekten entfernen, verschwindet der Höhenunterschied. So wird das Bild eingestellt:
%Vor%Quadratbildansicht:
%Vor%So kann das Problem durch das Bild selbst verursacht werden.
Ich hatte das gleiche Problem, wenn ich mit GridLayoutManager
arbeite. Gelöst es, indem Sie Breite und Höhe für Bild im Adapter einstellen.
Hier ist meine Lösung, hoffe es hilft.
So habe ich ImageView
in mein Layout eingefügt.
Und dann LayoutParams
auf das Elternlayout und ImageView
Hier ist die Methode getWidth.
%Vor%Siehe den Screenshot, einen mit Platzhalter und einen mit Bild.
Kannst du es bitte mit imageview height als behoben versuchen.
Tags und Links android android-recyclerview android-gridlayout gridlayoutmanager