2017-03-22 1 views
0

Ich versuche eine sehr einfache Anwendung, die eine RecyclerView mit einem GridLayoutManager verwendet. Was ich erreichen möchte, ist, die Spaltenbreite der Kartenelemente beizubehalten und die Ränder zwischen ihnen zu ändern (ich muss meine Spaltenbreite beibehalten). Aber was passiert, ist die Breite der Spalte selbst ändert sich, wenn ich zwischen Hochformat und Querformat wechsle.Android - Wie wird die Spaltenbreite für ein RecyclerView-Objekt beim Wechseln der Ausrichtung beibehalten?

Wenn ich das richtig verstanden habe, muss ich die Breite des Bildschirms messen, dividiere es durch die Breite jeder Karte und setze die Spannenzählung des GridLayoutManagers auf den berechneten Wert. Aber ich vermisse etwas.

Auch habe ich versucht, die AutoFitRecyclerView (http://blog.sqisland.com/2014/12/recyclerview-autofit-grid.html) mit und es gibt eine Menge von Stellen RecyclerView GridLayoutManager: how to auto-detect span count?, Changing number of columns in RecyclerView gridlayout, die helfen, die Spanne Zahl automatisch erkennen, aber das ist nicht das, was ich erreichen will. Ich möchte die gleiche Spaltenbreite haben, während ich die Ränder zwischen den Spalten justiere.

Alle Zeiger oder eine Lösung würden am meisten geschätzt werden.

Hier ist die Raster-Element Layout:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="210dp" 
    android:layout_height="338dp" 
    android:layout_margin="12dp"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/thumbnail" 
      android:layout_width="match_parent" 
      android:layout_height="270dp" 
      android:background="#1F000000"/> 

     <TextView 
      android:id="@+id/title_text" 
      android:layout_width="164dp" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/thumbnail" 
      android:layout_marginBottom="13dp" 
      android:layout_marginLeft="13dp" 
      android:layout_marginRight="32dp" 
      android:layout_marginTop="13dp" 
      android:ellipsize="end" 
      android:maxLines="2" 
      android:textColor="#393c3d" 
      android:textSize="14sp" /> 
    </RelativeLayout> 

</android.support.v7.widget.CardView> 
+0

das Layout veröffentlichen? – Shmuel

+0

@Shmuel Ich habe gerade das Layout des GridItems hinzugefügt, ich möchte die Breite und Höhe des CardView unabhängig von der Ausrichtung beibehalten. Es gibt einen 12dp Rand, der nicht sollte nicht behoben werden sollte. – user1841702

Antwort

0

Vielleicht können Sie CardView die onMeasure Methode und setMeasuredDimension überschreiben, um 210dp und 338dp, so dass, wenn Recyclerview Ihre Breite und Höhe des Cardview berechnen, wird die absolute Breite zurückkehren und Höhe.

Verwandte Themen