Android gridview android: numColumns = "auto_fit" siempre crea sólo dos columnas
Hola estoy desarrollando la pequeña aplicación Android en la que quiero mostrar gridview simple con algunos elementos.Está funcionando correctamente. El único problema es que siempre muestra sólo dos columnas aunque haya espacio. Su división es igualmente pantalla en 2 columnas y mostrar sólo dos elementos. Si establezco el número de columnas como número, es decir, no auto_fit, entonces se muestra correctamente. Mi código parece:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:id="@+id/gridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="5dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp"> </GridView> </FrameLayout>
Y mi elemento de cuadrícula se ve así:
- Android: cómo crear GridView
- ¿Cómo se puede utilizar la barra de desplazamiento horizontal de gridview en android?
- GridView ampliable con reciclaje de vistas en Android
- GridView error en el espaciado horizontal
- Vista de cuadrícula personalizada
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:context="com.example.androidcardlayout.MainActivity" > <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="100dp" android:layout_height="150dp" card_view:cardCornerRadius="4dp"> <RelativeLayout android:id="@+id/cardMianRlt" android:layout_width="100dp" android:layout_height="150dp" > </RelativeLayout>
¿Estoy haciendo algo mal? Necesito ayuda. Gracias.
- Android obtener la posición del elemento seleccionado en gridview
- Android gridview se estrella en Galaxy 3
- ¿Qué stretchMode utilizar en GridView en android
- Android GridView que hace que los artículos encajen en cada tamaño de pantalla
- Gridview mostrar de acuerdo a la altura real dentro de vista de desplazamiento
- ¿Cómo obtengo el elemento seleccionado de una Gridview con ImageAdapter? (Androide)
- Android Eliminar imagen de la tarjeta SD con OnClick
- GridView, GridLayout o TableLayout?
Parece que la configuración de ajuste automático sólo se aplica si tiene anchos de columna fijos. Este es el único lugar en el código fuente de GridView que utiliza la configuración de ajuste automático:
private boolean determineColumns(int availableSpace) { final int requestedHorizontalSpacing = mRequestedHorizontalSpacing; final int stretchMode = mStretchMode; final int requestedColumnWidth = mRequestedColumnWidth; boolean didNotInitiallyFit = false; if (mRequestedNumColumns == AUTO_FIT) { if (requestedColumnWidth > 0) { // Client told us to pick the number of columns mNumColumns = (availableSpace + requestedHorizontalSpacing) / (requestedColumnWidth + requestedHorizontalSpacing); } else { // Just make up a number if we don't have enough info mNumColumns = 2; } }
Esta función privada se llama durante el proceso de medición / disposición. Tenga en cuenta que dentro de la instrucción auto-fit if, a menos que requestedColumnWidth > 0
, sólo obtendrá 2 columnas, que es lo que está viendo.
Si un ancho fijo funciona para tu aplicación, entonces necesitas ponerlo en tu XML como este:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:id="@+id/gridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="5dp" android:numColumns="auto_fit" android:columnWidth="30dp" android:verticalSpacing="10dp" android:horizontalSpacing="10dp"> </GridView> </FrameLayout>
- ¿Por qué sólo el subproceso de interfaz de usuario en Android puede actualizar la interfaz de usuario?
- Ignorando el ajuste de tamaño de fuente de ICS