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í:

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

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> 
  • Android TableLayout vs GridView vs Otros?
  • Columnas para Android GridView Fit
  • Cómo obtener vídeo especificado de sdcard en android?
  • Cambiar la visibilidad del elemento Gridview
  • Cómo cargar imágenes de Internet en gridview de manera eficiente?
  • Ejemplo simple de red de Android con RecyclerView con GridLayoutManager (como el GridView antiguo)
  • Cómo especificar android: listSelector = "@ null" mediante programación?
  • ConvertView se pasa como null incluso si la vista existe
  • Android ImageAdapter con Gridview en el fragmento
  • GridView de Tumblr-style en Android
  • El clic de GridView no funciona dentro de la vista de lista personalizada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.