2011-09-15 34 views
13

Vea la captura de pantalla adjunta en la que estoy tratando de reducir el espacio entre las columnas en mi GridView.Android: reduzca el espacio entre las columnas en GridView

Mi main.xml es el siguiente:

<?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 las ImageViews en mi código de un mapa de bits. Sin embargo, no estoy especificando ningún relleno o espaciado u otros.

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

La imagen es here:

Gracias

+0

código anterior imageadapter: –

+4

Hola, estoy teniendo el mismo problema, y ​​me preguntaba si encontraste alguna solución; ¿tú también? – Ciprian

+0

¿Podría aceptar una solución que especifique el número de columnas en lugar del ancho de columna? – Hong

Respuesta

19

intento de fijar el número de columnas necesarias en el archivo XML para la red y establecer stretchMode como columnwidth

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

o establecer el espaciado horizontal y vertical en XML para rejilla

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

De hecho, ya había establecido numColumns en mi código. Ninguna de estas opciones redujo el espacio entre las columnas. La modificación del espaciado horizontal a un valor negativo simplemente empujó a la grilla más hacia la izquierda. La única manera en que puedo hacer que el espacio desaparezca es codificar el ancho de la siguiente manera: android: layout_width = "350px". Sin embargo, esta no es mi solución preferida – DJ180

+0

No funciona ... – Ixx

11

elimina el atributo Gravedad y utilizar el modo siguiente

android:stretchMode="NONE" 
+0

¿Qué quiere decir con "*" - esto no parece ser un atributo permitido? De cualquier manera, cuando intenté esto con algunos de los valores válidos de los atributos, no funcionó – DJ180

+0

, que representa * (astrick) significa automáticamente que ajustará el espacio – sravan

+0

No funciona ... – Ixx

4

espacio entre columnas es porque su elemento gridview no está ocupando por completo el espacio de la columna proporcionada por la vista de cuadrícula.

La solución para eliminar espacio entre columnas es medir el ancho y alto de la pantalla del dispositivo y dividirlo por el número de columnas y filas. Esto dará el ancho y alto para cada elemento de vista de grilla.

tiene que asignar este alto y ancho a la vista de la imagen y también escalar su mapa de bits para que coincida con la vista de 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 
3

Hola he tenido el mismo problema que resuelve mediante mygridView.setStretchMode(GridView.NO_STRETCH);

1

que estaba teniendo problema similar de tener una ligera separación horizontal entre las columnas en algunos dispositivos. (No necesité espacio). Estaba calculando correctamente el ancho del elemento de la grilla dividiéndolo con el ancho total. Estaba recibiendo este problema solo en dispositivos Lenovo.

siguiente código estaba en la 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); 

siguiente código XML se encontraba en el diseño de la rejilla

<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" 
    /> 

yo era incapaz de resolver problema después de cambiar los valores del modo de estiramiento.

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

android:horizontalSpacing="0dp" 

Espero que a alguien como yo le pueda resultar útil.

Atentamente.

1

Tuve el mismo problema. Minimicé espacio de la columna al hacer esto

de 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" 
0

Puede reducir el espacio de b/w columna estableciendo el androide: horizontalSpacing = "- 10DP" (algunos números negativos)

Cuestiones relacionadas