Ich habe eine RecyclerView, deren Elemente in 4 Spalten angezeigt werden müssen. Ich tue dies über GridLayoutManager wie unten dargestellt:RecyclerViews GridLayoutManager - Zeilen Überlappung auf kürzeren Bildschirmen
mActivityBinding.bwRv.setAdapter(mAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(MysActivityTwo.this, 4);
mActivityBinding.bwRv.setLayoutManager(gridLayoutManager);
Mit meiner Einzelposition Layout wie unten dargestellt:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/bw_items_width"
android:layout_height="100dp"
android:layout_alignEnd="@+id/bw_et_questions"
android:layout_alignStart="@+id/bw_et_questions"
android:layout_below="@+id/bw_et_questions"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardCornerRadius="2dp"
app:optCardBackgroundColor="@color/dark_font"
card_view:cardElevation="2dp">
</android.support.v7.widget.CardView>
So hat es feste Höhe und Breite.
Es wird korrekt in normalen größeren Bildschirmen angezeigt, aber in kleineren Bildschirm, Spalten überlappen sich gegenseitig. Gibt es eine Möglichkeit, dass ich angeben kann, dass normalerweise in größeren Bildschirmen 4 Spalten aufgenommen werden sollten, aber in kleineren Bildschirmen sollte es sich irgendwie umwickeln und nicht überlappen?
Ja, ich weiß, dass ich Ordner mit wie xxxhdpi definieren können oder xxhdpi usw. Aber ich möchte eine automatische Art und Weise für maxColumns sichtbar. Das heißt, wenn sich Spalten überschneiden, wird die Anzahl der Spalten erhöht. – Tarun
Sie können vor dem Definieren des LayoutManagers nach der Bildschirmbreite suchen und die Anzahl der Spalten entsprechend definieren. – fightingCoder