2016-07-27 22 views
21

Ich habe eine vertikale Recycleransicht mit einem Gridlayoutmanager. Ich möchte, dass jede Spalte zentriert ist, aber die Spalten beginnen ganz links. Auf dem folgenden Bild können Sie sehen, wovon ich rede. Ich habe das hässliche Farbschema verwendet, um die Spalten und den Hintergrund zu veranschaulichen. Das Grün ist der Hintergrund für jedes Element in der recyclerview, ist die rote der Hintergrund des recyclerview selbst:So zentrieren Sie RecyclerView-Objekte horizontal mit vertikalem GridLayoutManager

http://imgur.com/a/J3HtF

ich es bin Einrichtung mit:

mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); 

Hier ist die column_item. xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="120dp" 
       android:layout_height="180dp" 
       android:orientation="vertical" 
       android:padding="4dp"> 

    <ImageView 
     android:id="@+id/movie_column_photo" 
     android:layout_width="80dp" 
     android:layout_height="120dp"/> 

    <TextView 
     android:id="@+id/movie_column_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

Hier ist die recyclerview xml:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/company_details_recyclerview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"> 
    </android.support.v7.widget.RecyclerView> 
</LinearLayout> 

Antwort

43

Probieren Sie den Spalt Artikel füllen die Breite des Spalts zu lassen, während alles in Zentrierung:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="180dp" 
       android:orientation="vertical" 
       android:padding="4dp"> 

    <ImageView 
     android:id="@+id/movie_column_photo" 
     android:layout_width="80dp" 
     android:layout_height="120dp" 
     android:layout_gravity="center_horizontal"/> 

    <TextView 
     android:id="@+id/movie_column_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center"/> 
</LinearLayout> 
+0

, der wie ein Charme! Vielen Dank! – JackTheCripple

+0

Großartig! Funktioniert perfekt, danke! –

+0

Artikel mit gefüllter Breite löste das Problem für mich! Vielen Dank –