Androide ¿Cómo estirar las filas en el gridview para llenar la pantalla?
Tengo GridView simple (con una columna y seis filas), que exhibe ImageView con TextView en la célula (yo crea el adaptador). Cómo estirar las filas para llenar toda la altura de la pantalla ?? Ahora tengo algo de espacio debajo de las celdas …
Main.xml
- Cómo evitar reiniciar la actividad cuando cambia la orientación en Android
- Pantalla de preferencia El diseño personalizado sólo funciona con el segundo clic
- Android, IOS fuerza presionando en la pantalla
- Obtener información de rotación automática en Android
- screen.width + android
<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; }
}
- Android Obtener dimensiones de pantalla desde el servicio
- ¿Cómo abrir la última pantalla de preferencias usadas?
- Tamaño de fondo de la imagen de la actividad de Android
- Densidad y resolución de Android xhdpi
- Android usando márgenes a través de varios tamaños de pantalla
- Android, mdpi densidad pero diferentes pantallas
- OnDestroy se llama cada vez que se enciende la pantalla
- Intercambio de pantalla de Android mediante programación (Root)
En cuanto a lo que entendí, la pregunta es: si tengo 6 filas de datos para ser llenado en el gridView, ¿cómo puedo hacer que estas 6 filas llenen toda la pantalla, en lugar de mostrar 6 filas y un espacio vacío debajo de la última fila.
Para lograr esto, debe establecer la altura mínima del diseño del elemento gridView (en su caso, su item.xml) a (altura 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áticos y utilizarlos en el adaptador, tuve un problema en la búsqueda de estos valores en la clase del adaptador
Luego para establecer la altura mínima:
view = inflater.inflate(R.layout.item, null); view.setMinimumHeight(GridViewActivity.height/6);
Lo intenté después de ver el post, y funcionó perfectamente.
Si sólo desea aumentar el espacio entre las líneas que puede utilizar el relleno debe funcionar. Usted puede fijar el relleno a través de xml o programmatically basado en su requisito.
// 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);
Espero que te entienda correctamente, si es tan fácil como cambiar tu GridView
a fill_parent instead
de wrap_content
.
Cambio
<GridView android:layout_height="wrap_content"
a
<GridView android:layout_height="fill_parent"
Si éste no es el caso entonces es probablemente la altura de la disposición en el LinearLayout
del item.xml que usted desea modificar.
- Cómo ajustar texto a la siguiente línea en un Android TextView?
- ¿Cómo comprobar mediante programación la disponibilidad de la conexión a Internet en Android?