Wenden Sie den Offset auf GridLayout-Elemente an und behalten Sie die gleiche Größe für alle Elemente bei

9

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:

%Vor%

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:

%Vor%

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.

    
Lost in OWL 25.04.2017, 13:08
quelle

2 Antworten

2

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.

%Vor%

Und dann LayoutParams auf das Elternlayout und ImageView

anwenden %Vor%

Hier ist die Methode getWidth.

%Vor%

Siehe den Screenshot, einen mit Platzhalter und einen mit Bild.

    
Noman Rafique 04.05.2017, 11:59
quelle
1

Kannst du es bitte mit imageview height als behoben versuchen.

    
Sunisha Sindhu 04.05.2017 11:42
quelle