2011-09-15 20 views
13

Vedere lo screenshot allegato dove sto tentando di ridurre lo spazio tra le colonne nel mio GridView.Android: Ridurre lo spazio tra le colonne in GridView

mio main.xml è la seguente:

<?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> 

sto creando le ImageViews nel mio codice da una bitmap. Tuttavia, non sto specificando alcun padding o spaziatura o altro.

Come posso ridurre questo spazio tra le colonne? Ho provato una varietà di impostazioni su entrambi i GridView e ImageViews ma senza fortuna

immagine è here:

Grazie

+0

codice imageadapter precedente: –

+4

hey, sto avendo lo stesso problema e mi chiedevo se hai trovato qualche soluzione; così hai fatto? – Ciprian

+0

Potresti accettare una soluzione specificando il numero di colonne anziché la larghezza della colonna? – Hong

risposta

19

tentare di risolvere il numero di colonne necessarie nel file XML per griglia e impostare stretchMode come columnwidth

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

o impostare la spaziatura orizzontale e verticale in xML per griglia

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

In realtà avevo già il numColumns impostato nel mio codice. Nessuna di queste opzioni ha ridotto lo spazio tra le colonne. Modificando la spaziatura orizzontale con un valore negativo, si è semplicemente spinto la griglia generale più a sinistra. L'unico modo in cui posso ottenere lo spazio per scomparire è quello di hardcode la larghezza come segue: android: layout_width = "350px". Tuttavia, questa non è la mia soluzione preferita – DJ180

+0

Non funziona .. – Ixx

11

Rimuovere attributo gravità e utilizzare la modalità seguente

android:stretchMode="NONE" 
+0

Cosa intendi con "*" - questo non sembra essere un attributo consentito? In entrambi i casi, quando ho provato questo con alcuni dei valori degli attributi validi non ha funzionato – DJ180

+0

che rappresenta * (astrick) significa che regolerà automaticamente lo spazio – sravan

+0

Non funziona .. – Ixx

4

spazio tra colonne è perché l'elemento gridview non occupa tutto lo spazio colonna fornito da vista griglia.

La soluzione per rimuovere lo spazio tra le colonne consiste nel misurare la larghezza e l'altezza dello schermo del dispositivo e dividerlo per il numero di colonne e righe. Questo darà la larghezza e l'altezza per ogni elemento della vista della griglia.

devi assegnare questa altezza e larghezza alla vista di immagini e anche ridimensionare la tua bitmap in modo che corrisponda alla visualizzazione di immagini.

Codice:

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

Hi Ho avuto lo stesso problema ho risolto da mygridView.setStretchMode(GridView.NO_STRETCH);

1

ho avuto simile problema di avere leggera spaziatura orizzontale tra le colonne in pochi dispositivi. (Non avevo bisogno di spazio.) Stavo calcolando correttamente la larghezza della griglia dividendola con la larghezza totale. Stavo ricevendo questo problema solo sui dispositivi Lenovo.

codice seguente era in attività relative alla rete.

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); 

seguente codice è nel layout XML per griglia

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

ho potuto risolvere problema dopo aver cambiato valori della modalità di stirata.

Ma il seguente valore nel layout xml per GridView ha fatto il trucco.

android:horizontalSpacing="0dp" 

Spero che qualcuno come me possa trovarlo utile.

Saluti.

1

Ho avuto lo stesso problema. Ho ridotto al minimo lo spazio colonna facendo questo

per GridView

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

per IMAGEVIEW

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

È possibile ridurre lo spazio di b/w colonna impostando l'androide: horizontalSpacing = "- 10dp" (un numero negativo)

Problemi correlati