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
?
- Recogida de basura GridView de Android (GC_EXTERNAL_ALLOC) <1K excesivamente, causando una interfaz de usuario muy intermitente
- Eliminar el espacio de borde alrededor de GridView
- Word Search Game: Cómo seleccionar varios elementos en una GridView arrastrando? (Androide)
- GridView carga lento para los recursos de imagen grande
- android Espere entre actualizaciones de GridView
- ¿Cómo hacer una galería de imágenes de 2 dimensiones con desplazamiento horizontal y vertical?
- Cómo habilitar arrastrar y soltar en el elemento de GridView onClick ()
- GridView altura de la fila
- Android GridView pinch zoom
- Android GridView con separador
- Crear una gran red de contenido en Android
- Cómo mostrar anuncios de banner de forma intermitente en gridview
- Tire para actualizar para GridView en Android
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:
- Establezca layout_padding 4 dp en el RecyclerView.
- 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; }
- Cómo descargar el archivo con el servicio en el fondo?
- Acceso a variables de entorno desde Android Studio gradle build