android - staggeredgridlayoutmanager - Cómo centrar los elementos de RecyclerView horizontalmente con GridLayoutManager vertical
recyclerview android studio ejemplo (1)
Tengo un recyclerview vertical utilizando un gridlayoutmanager. Quiero que cada columna esté centrada, pero las columnas comienzan completamente a la izquierda. En la siguiente imagen puedes ver de lo que estoy hablando. Utilicé el esquema de color feo para ilustrar las columnas y el fondo. El verde es el fondo de cada elemento en el recyclerview, el rojo es el fondo del recyclerview:
Lo estoy configurando con:
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
Aquí está el 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>
Aquí está el 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>
Intente dejar que el elemento de la columna llene el ancho de la columna mientras centra todo dentro:
<?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>