Android: reduce el espacio entre columnas en GridView

Vea la captura de pantalla adjunta en la que intento reducir el espacio entre las columnas de mi GridView.

Mi main.xml es como sigue:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <GridView android:id="@+id/gridview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchMode="columnWidth" android:gravity="center" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/logo"/> <TextView android:text="@string/game_score" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center"/> </LinearLayout> </LinearLayout> 

Estoy creando el ImageViews en mi código de un mapa de bits. Sin embargo, no estoy especificando ningún relleno o espaciado o de otra manera.

¿Cómo puedo reducir este espacio entre columnas? He intentado una variedad de ajustes en GridViews y ImageViews pero sin suerte

La imagen es aquí :

Gracias

Intenta arreglar el número de columnas necesarias en el archivo xml para la cuadrícula y establece stretchMode como columnwidth

 android:numColumns="3" android:columnWidth="60dp" android:stretchMode="columnWidth" 

O establecer el espaciado horizontal y vertical en xml para la cuadrícula

 android:verticalSpacing="10dp" android:horizontalSpacing="10dp" 

Eliminar el atributo Gravedad y utilizar el siguiente modo

 android:stretchMode="NONE" 

El espacio entre columnas se debe a que el elemento gridview no ocupa por completo el espacio de columna proporcionado por la vista de cuadrícula.

La solución para eliminar espacio entre columnas es medir el ancho y la altura de la pantalla del dispositivo y dividirlo por el número de columnas y filas. Esto proporcionará el ancho y la altura para cada elemento de vista de cuadrícula.

Usted tiene que asignar esta altura y el ancho a la vista de la imagen y también escala su mapa de bits para que coincida con la imagen.

Código:

  DisplayMetrics displayMetrics=getResources().getDisplayMetrics(); screen_width=displayMetrics.widthPixels; //width of the device screen screen_height=displayMetrics.heightPixels; //height of device screen int view_width=screen_width/number of columns; //width for imageview int view_height=screen_height/number of rows; //height for imageview Imageview myImageView=(ImageView)findViewById(R.id.my_id); myImageView.getLayoutParams().width=view_width; myImageView.getLayoutParams().height=view_height; Bitmap myImage=Bitmap.createScaledBitmap(src, view_width, view_height, true);//scaling the image to match the size of image view 

Hola tuve el mismo problema que resolví por mygridView.setStretchMode(GridView.NO_STRETCH);

Estaba teniendo problema similar de tener el espaciamiento horizontal leve entre las columnas en pocos dispositivos. (Yo no requería ningún espacio.) Yo estaba calculando adecuadamente el ancho de la cuadrícula dividiéndolo con el ancho total. Estaba recibiendo este problema sólo en dispositivos Lenovo.

Código siguiente estaba en actividad relacionada con la cuadrícula.

 int myRequestedColumnWidth = myGridViewContentMain.getRequestedColumnWidth(); Point size = new Point(); getWindowManager().getDefaultDisplay().getSize( size ); int width = size.x; int height = size.y; int myGridColumns = width / myRequestedColumnWidth; if ( myGridColumns == 0 || myGridColumns == 1 ) myGridColumns = 2; myColumnWidth = ( width / myGridColumns ); myGridViewContentMain.setNumColumns(myGridColumns); 

El siguiente código estaba en formato xml para la cuadrícula

 <GridView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/gridViewContentMain" android:layout_centerHorizontal="true" android:numColumns="2" android:columnWidth="200dp" android:verticalSpacing="0dp" android:layout_below="@+id/relativeLayoutMainHeader" android:layout_above="@+id/relativeLayoutProgressBar" /> 

No pude resolver el problema después de cambiar los valores del modo de estiramiento.

Pero el valor siguiente en el diseño xml para GridView hizo el truco.

  android:horizontalSpacing="0dp" 

Espero que alguien como yo pueda encontrar esto útil.

Saludos.

Yo tuve el mismo problema. He minimizado el espacio de la columna haciendo esto

Para gridView

 android:numColumns="2" android:columnWidth="90dp" android:verticalSpacing="0dp" android:horizontalSpacing="-30dp" android:stretchMode="columnWidth" 

Para imageView

 android:layout_width="115dp" android:layout_height="150dp" android:padding="1dp" android:layout_marginLeft="30dp" android:layout_marginRight="-15dp" 

Puede reducir la columna de espacio b / w estableciendo el android: horizontalSpacing = "- 10dp" (algún número negativo)

  • FragmentTabHost - No se conoce ninguna pestaña null
  • ¿Cómo evitar los pesos anidados?
  • Cambiar ScrollView scrollBarStyle mediante programación en Android
  • Cómo inclinar un diseño en android?
  • StaggeredGridLayoutManager reordena los elementos
  • Android - Eliminar CacheColorHint para ListView
  • Lamentablemente la aplicación se ha detenido
  • Google Currents como estilo de lectura página por página
  • ¿Cómo hacer la aplicación de respuesta Android que se utiliza en el móvil y también en la tableta?
  • Model-View-Presenter y diseño de aplicaciones para Android
  • Manteniendo una vista en la parte inferior con la biblioteca de SlidingUpPanel
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.