Elementos del centro en GridView

Tengo GridView con 6 imágenes en 2 columnas. Quiero mostrar estas 6 imágenes en el centro de la pantalla. Pongo las propiedades de la gravedad al centro, pero este centro elementos sólo horizontalmente. GridView toma toda la pantalla.

<GridView android:id="@+id/gridview" android:layout_above="@id/ad" android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="2" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:background="#ffffff" android:gravity="center" /> 

Aquí es lo que hice para obtener los elementos en la gridview al centro (observe el stretchmode, columnwidth, gravedad y espaciado horizontal y vertical):

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="5dp" > <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="spacingWidthUniform" android:verticalSpacing="10dp" /> </LinearLayout> 

Me tomó un tiempo para averiguarlo, pero jugando con los diferentes valores que pude conseguir que el centro.

Intente envolver su GridView en un LinearLayout que tenga sus elementos secundarios centrados y cambie el layout_height de su gridview a "wrap_content". ex:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:layout_gravity="center"> <GridView android:id="@+id/homeGridView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="3" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" /> </LinearLayout> 

Necesita establecer los siguientes atributos:

 android:stretchMode="columnWidth" 

…y…

 android:gravity="center" 

Así, en caso de que esté utilizando un adaptador personalizado para inflar un único rowview dentro de su gridview, a continuación, intente agregar android: gravedad = "centro" a la disposición de su single_row .. esto hará el truco espero 🙂 es decir,

 <?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="match_parent" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/ivClrBlock" android:layout_width="88dp" android:layout_height="88dp" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" /> <TextView android:id="@+id/tvClrName" android:layout_width="88dp" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:gravity="center" android:text="@string/color_name" android:textSize="15sp" /> </LinearLayout> 

Intente cambiar esto:
android:layout_height="fill_parent"
dentro
android:layout_height="wrap_content"

Ahora está diciendo a su vista de cuadrícula que llene completamente la altura y el ancho de los padres.

Aquí está mi respuesta:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/linearLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dip" android:gravity="center" android:numColumns="3" android:stretchMode="spacingWidthUniform" android:verticalSpacing="10dip" /> </LinearLayout> 

No utilice padding ni horizontalSpacing si no lo necesita ya que puede causar problemas con otras vistas.

Tenga en cuenta también que fill_parent ya está obsoleto.

Espero que esto solucione su problema:

  <LinearLayout android:layout_gravity="center_horizontal" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <GridLayout android:id="@+id/gridlayou4x3" android:rowCount="4" android:columnCount="3" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="80" android:minWidth="25px" android:minHeight="25px" /> </LinearLayout> 

Encontré que sólo tiene el contenido de gridlayout en height y width .

 android:layout_centerHorizontal="true" 

Se centrará en sí mismo para el tamaño que necesita, pero si lo tiene que coinciden con el padre. Usted está centrándolo técnicamente basado en un montón de espacio vacío de los padres para compensar a sus hijos.

Se produjo un error cuando actualizé el adaptador gridview de:

  gridView = inflater.inflate(R.layout.mobile, null); 

a

  gridView = inflater.inflate(R.layout.mobile, parent, false); 

Así que sólo invertido de nuevo con un try catch si la versión anterior (nula) falló.

  • GridView con elemento de fila incompleto no se desplaza
  • Alinear la casilla de verificación dentro de un diseño relativo
  • Lazy descargar imágenes en gridView
  • Cómo configurar un colspan en una celda de gridview de Android
  • ProgressBar en la parte inferior de gridview
  • Evento de ScrollUp y ScrollDown de GridView OnScrollListener de Android
  • Android Gridview y el botón OnItemclick
  • Adición dinámica de elementos de cuadrícula en vista de cuadrícula
  • Creación de Gridview con imágenes seleccionables, Android
  • ¿Cómo obtengo el elemento seleccionado de una Gridview con ImageAdapter? (Androide)
  • Imagen de Android parpadeando en la imagen en recyclerview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.