2016-07-27 1 views
21

J'ai une vue de recyclage verticale à l'aide d'un gestionnaire gridlayoutmanager. Je veux que chaque colonne soit centrée, mais les colonnes commencent tout le chemin à gauche. Dans l'image suivante, vous pouvez voir de quoi je parle. J'ai utilisé le schéma de couleur laide pour illustrer les colonnes et l'arrière-plan. Le vert est l'arrière-plan pour chaque élément de la recyclerview, le rouge est l'arrière-plan de l'recyclerview lui-même:Comment centrer les éléments RecyclerView horizontalement avec GridLayoutManager vertical

http://imgur.com/a/J3HtF

Je mise en place avec:

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

Voici le 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> 

Voici le 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> 

Répondre

43

Essayez de laisser l'élément de colonne remplir la largeur de la colonne tout en centrant tout à l'intérieur:

<?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

Cela a fonctionné comme un charme! Merci beaucoup! – JackTheCripple

+0

Super! Fonctionne parfaitement merci! –

+0

L'article avec la largeur remplie a résolu le problème à moi! Merci –