StaggeredGridLayoutManager
scheint keine Anpassung einer Zellenbreite zuzulassen oder mehrere Spalten (außer Vollspanne) für vertikale Ausrichtung zu überspannen.LayoutManager für RecyclerView Grid mit unterschiedlicher Zellenbreite
Was ist ein LayoutManager
bevorzugte Zellen für die Organisation, wie oben gezeigt?
P.S. Ich möchte nur wissen, wie Zellenbreite anpassen und nicht Höhe mit StaggeredGridLayoutManager
. Ich weiß, Höhe kann wie in dieser sample implementiert angepasst werden.
public class VerticalStaggeredGridFragment extends RecyclerFragment {
public static VerticalStaggeredGridFragment newInstance() {
VerticalStaggeredGridFragment fragment = new VerticalStaggeredGridFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
protected RecyclerView.LayoutManager getLayoutManager() {
return new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
}
@Override
protected RecyclerView.ItemDecoration getItemDecoration() {
return new InsetDecoration(getActivity());
}
@Override
protected int getDefaultItemCount() {
return 100;
}
@Override
protected SimpleAdapter getAdapter() {
return new SimpleStaggeredAdapter();
}
}
Adapter
public class SimpleStaggeredAdapter extends SimpleAdapter {
@Override
public void onBindViewHolder(VerticalItemHolder itemHolder, int position) {
super.onBindViewHolder(itemHolder, position);
final View itemView = itemHolder.itemView;
if (position % 4 == 0) {
int height = itemView.getContext().getResources()
.getDimensionPixelSize(R.dimen.card_staggered_height);
itemView.setMinimumHeight(height);
} else {
itemView.setMinimumHeight(0);
}
}
}
itemView.setMinimumWidth(customWidth)
wirkt sich nicht auf Zellenbreite.
zu vereinfachen, ich mein Grid-Layout zu
aktualisieren Wie Zelle 0 Breite zu erhöhen, wie 1 in einem StaggeredGridLayoutManager
zu Zelle im Vergleich oder einem anderen Layout-Manager?
Sind Sie in der Lage Zellenbreite auf 1/4 oder 3/4 oder sagen spezifische Größe in dp für ein Gitter mit Spannweite 2 Größe einstellen? Ich war in der Lage, benutzerdefinierte Höhe, aber nicht Breite mit staggeredgridlayoutmanager. Sie werden feststellen, dass die Zellen in meinem Bild in der ersten Zeile nicht die gleiche Breite haben. Ich werde deine Lösung auch in einiger Zeit versuchen und zurückkommen. – random
Das ist genau das, was ich getan habe, wenn Sie die Methode "CreateViewHolder" aktiviert haben. –
Können Sie den Code in Ihrer Antwort für das von mir bereitgestellte Rasterbild aktualisieren? Ich werde Ihre Lösung erst morgen ausprobieren können. – random