2011-08-15 14 views
17

Tengo GridView simple (con una columna y seis filas), que muestra ImageView con TextView en la celda (creo el adaptador). ¿Cómo estirar las filas para llenar toda la altura de la pantalla? Ahora tengo un poco de espacio por debajo de las células ...android ¿Cómo estirar filas en la vista de cuadrícula para llenar la pantalla?

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal"> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="150dp" 
    android:orientation="vertical" 
    android:id="@+id/left"> 
    <include layout="@layout/menu_grid"></include> 
</LinearLayout> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/right"> 
    <ImageView android:src="@drawable/image" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/imageMain" 
     android:layout_gravity="center"> 
    </ImageView> 
</LinearLayout> 

menu_grid.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 
<GridView android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/gridView" 
    android:padding="10dp" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:numColumns="1" 
    android:columnWidth="100dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"></GridView> 

item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:orientation="vertical" android:gravity="fill_horizontal"> 
<ImageView android:src="@drawable/icon" 
    android:layout_height="70dp" android:id="@+id/imageIcon" 
    android:layout_width="70dp" android:layout_gravity="center_horizontal"></ImageView> 
<TextView android:id="@+id/textIcon" android:text="TextView" 
    android:layout_gravity="center" android:layout_height="wrap_content" 
    android:layout_width="wrap_content"></TextView> 

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
//....some code 
//.... 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view; 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.item, null); 

     TextView text = (TextView) view.findViewById(R.id.textIcon); 
     text.setText(labels[position]); 

     ImageView image = (ImageView) view.findViewById(R.id.imageIcon); 
     image.setImageResource(icons[position]);   

    } else { 
     view = convertView; 
    } 

    return view; 
} 

}

+0

Publique su diseño y/o código. – Brian

Respuesta

-1

espero que estoy entendiendo correctamente, si es así, es tan fácil como cambiar su GridView-fill_parent instead de wrap_content.

Cambio

<GridView android:layout_height="wrap_content" 

a

<GridView android:layout_height="fill_parent" 

Si este no es el caso, entonces es probable que sea la altura de diseño en el LinearLayout del item.xml que desea modificar.

+1

Gracias, pero no funciona :(Solo quiero aumentar el espacio entre las líneas para llenar la pantalla (estirar las filas, no las columnas) .. Lo intentaré con la altura del diseño :) – snil

27

Según tengo entendido, la pregunta es: si tengo 6 filas de datos para llenar en la vista de cuadrícula, ¿cómo puedo hacer que estas 6 filas llenen toda la pantalla, en lugar de mostrar 6 filas y un espacio vacío debajo la última fila

Para lograr esto, debe establecer la altura mínima del diseño de elemento de gridView (en su caso es item.xml) a (alto de la pantalla)/6, donde 6 es el (número de filas que debe rellenar) . Esta altura mínima se puede establecer en el adaptador que está utilizando.

para encontrar la altura de la pantalla del dispositivo:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

int width = metrics.widthPixels; 
int height = metrics.heightPixels; 

encontrar estos valores en la actividad y hacerlos públicos estática y utilizarlos en el adaptador, que tenía un problema en la búsqueda de estos valores en el clase adaptador

a continuación para ajustar la altura mínima:

view = inflater.inflate(R.layout.item, null); 
view.setMinimumHeight(GridViewActivity.height/6); 

yo probamos este después de ver el post, y funcionó perfectamente.

+4

¡Funciona como un amuleto ...! – dd619

+0

¡¡Genial !! Funcionó. ¡Gracias hombre! – Bhupinder

+0

Funciona perfectamente .... – bynu022

3

Si solo desea aumentar el espacio entre las líneas Puede utilizar el relleno que debería funcionar. puede configurar el relleno a través de xml o programáticamente en función de sus requisitos.

// this you can set inside your view. 
android:paddingLeft="5px" 
android:paddingRight="5px" 
android:paddingTop="10px" 
android:paddingBottom="10px" 

// this you can set to your any widgets like TextView/Layouts/Buttons etc.. 
setPadding(top, left, bottom, right); 
Cuestiones relacionadas