Android – RecyclerView espaciado entre elementos en una cuadrícula

En mi aplicación para Android, estoy usando un RecyclerView para mostrar elementos en una cuadrícula usando GridLayoutManager . En un GridView, para especificar el espaciado entre los elementos, establecería las propiedades horizontalSpacing y verticalSpacing .

Entonces, ¿cómo puedo hacer lo mismo en un RecyclerView ?

No lo he probado con un GridLayout pero para un LinearLayout, simplemente establezco un margen para el diseño raíz de cada listitem. Supongo que si quieres el mismo espacio entre todos los elementos (digamos 8dp), tendría que hacer esto:

  1. Establezca layout_padding 4 dp en el RecyclerView.
  2. Establezca layout_margin 4 dp para cada listitem.

De esta manera usted tendría un constante 8 dp alrededor de cada artículo.


El siguiente código es un RecyclerView horizontal que muestra imágenes con un espaciado correcto de 8 dp:

 <!-- fragment_layout.xml --> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="4dp"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:layoutManager="android.support.v7.widget.LinearLayoutManager" tools:listitem="@layout/list_item" /> </LinearLayout> 

 <!-- list_item.xml --> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="4dp"> <ImageView android:layout_width="@dimen/thumbnail_size" android:layout_height="@dimen/thumbnail_size" android:contentDescription="@string/image_content_desc" /> </LinearLayout> 

EDIT: Me di cuenta de que la vista del elemento necesita tener un ViewGroup padre, así que actualizé el fragmento.

Usted tiene que usar un ItemDecorator para eso:

Me gusta esto:

 public class EqualSpaceItemDecoration extends RecyclerView.ItemDecoration { private final int mSpaceHeight; public EqualSpaceItemDecoration(int mSpaceHeight) { this.mSpaceHeight = mSpaceHeight; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.bottom = mSpaceHeight; outRect.top = mSpaceHeight; outRect.left = mSpaceHeight; outRect.right = mSpaceHeight; } 
  • Adaptador personalizado para gridview en android
  • Android: Deshabilitar resaltado en GridView
  • ¿Cómo puedo desactivar el desplazamiento de una vista de cuadrícula
  • Android gridview expandir animación de elementos
  • Android - Gridview con Custom BaseAdapter, crear onclicklistener
  • los elementos del lugar de visualización de la cuadrícula de Android de derecha a izquierda
  • Android gridview se estrella en Galaxy 3
  • Cómo configurar un colspan en una celda de gridview de Android
  • ¿Es posible crear un GridVIew de LinearLayouts?
  • GridView con el último elemento centrado
  • ¿Cómo obtengo el elemento seleccionado de una Gridview con ImageAdapter? (Androide)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.