GridLayoutManager 3 columnas en RecyclerView

Estoy intentando hacer GridLayout simple con 3 columnas pero aunque consigo 3 columnas consigo la brecha extraña entre las filas. Así pues, consigo 3 imágenes en fila que una fila que está vacía (que parece tiene la altura que empareja la altura de la fila abov (que tiene imágenes), después fila de 3 imágenes, que la brecha extraña … etc. ¿Cómo eliminar esta brecha en blanco? Tratando de establecer wrap_content a layout_height en la vista de reciclador, y el fragmento no ayudó.Este es mi código:

final GridLayoutManager layoutManager = new GridLayoutManager(this,3); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(adapter); 

Este es el xml de la actividad:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.adriagate.adriagateonlineandroid.activities.ImagesActivity"> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragmentImagesHeader" android:name="com.adriagate.adriagateonlineandroid.fragments.ImagesHeader" tools:layout="@layout/fragment_images_header" android:layout_width="match_parent" android:layout_height="match_parent" > </fragment> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragmentImagesGrid" android:name="com.adriagate.adriagateonlineandroid.fragments.ImagesList" tools:layout="@layout/fragment_images_list" android:layout_width="match_parent" android:layout_height="wrap_content" > </fragment> </RelativeLayout> 

Observe que este diseño tiene un fragmento importante llamado fragmentImagesGrid que tiene esta disposición:

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.adriagate.adriagateonlineandroid.fragments.ImagesList"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view_images" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:listitem="@layout/recycler_view_images_one_row" > 

 </FrameLayout> 

Este es el diseño de un elemento dentro de la vista del reciclador:

  <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools" > <ImageView android:id="@+id/imageViewImagesAllOneRow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" tools:src="@drawable/slika_200_200" /> </FrameLayout> 

No quiero este espacio vacío que puedes ver en esta imagen

Parece que sucede porque sus imágenes tienen diferentes tamaños. Cambie su elemento a LinearLayout y establezca su altura y ancho de diseño como match_parent. Set gravity = "center" (Del diseño lineal). Otro problema es android: layout_height = "wrap_content" . El RecyclerView no funciona bien cuando se establece la propiedad height como wrap_content. Si todavía desea utilizar RecyclerView con wrap_content, puede ckeck esta solución

  • Obtener el elemento visible en el centro de RecycleView al desplazarse
  • Cómo implementar correctamente un adaptador para un ListView
  • Retroalimentación de RecyclerView + CardView + Touch
  • Tipos incompatibles: no se puede emitir el visor a imageviewholder
  • AnimateLayoutChanges no funciona con RecyclerView
  • Android Recyclerview Layoutmanager's onLayoutChildren llamado cuando se cambia el contenido del elemento
  • ¿Cómo se puede agregar una línea de divisor en un Android RecyclerView?
  • NotifyDataSetChange no funciona en RecyclerView
  • Configuración de la aplicación: layout_behavior mediante programación
  • Mostrar un RecyclerView en Fragmento
  • Taps rápidos (clics) en RecyclerView abre varios fragmentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.