Wir werden keine externe Bibliothek mehr brauchen Denn das native RecyclerView von Android macht die Implementierung eines Pinterest-Mauerwerkslayouts einfach, indem der Layout-Manager des RecyclerViews
geändert wird
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
RecyclerAdapter adapter = new RecyclerAdapter(this);
mRecyclerView.setAdapter(adapter);
Kühl. Es ist sehr einfach, aber der Rand meines LinearLayout scheint nicht zu funktionieren. Also hier ist eine schnelle Lösung.
SpacesItemDecoration decoration = new SpacesItemDecoration(16);
mRecyclerView.addItemDecoration(decoration);
SpacesItemDecoration Klasse:
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private final int mSpace;
public SpacesItemDecoration(int space) {
this.mSpace = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = mSpace;
outRect.right = mSpace;
outRect.bottom = mSpace;
// Add top margin only for the first item to avoid double space between items
if (parent.getChildAdapterPosition(view) == 0)
outRect.top = mSpace;
}
}
Github link of example
Haben Sie die Lösung herausfinden? –
Die Lösung ist, dass ich eine benutzerdefinierte AdapterView-Komponente erstellen. Ich werde die Komponente auf GitHub teilen, wenn es abgeschlossen wird. – Matroska
Danke, bitte posten Sie Ihren tollen Code hier –