Estoy tratando de mostrar 8 elementos dentro de una vista de cuadrícula. Lamentablemente, la altura de la vista de cuadrícula siempre es demasiado pequeña, por lo que solo muestra la primera fila y una pequeña parte de la segunda.
La configuración lo android:layout_height="300dp"
hace funcionar. wrap_ content
y fill_parent
aparentemente no.
Mi vista de cuadrícula:
<GridView
android:id="@+id/myId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:horizontalSpacing="2dp"
android:isScrollContainer="false"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
Mi recurso de artículos:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:minHeight="?android:attr/listPreferredItemHeight" >
<ImageView
android:id="@+id/appItemIcon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_dialog_info"
android:scaleType="center" />
<TextView
android:id="@+id/appItemText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My long application name"
android:gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
El problema no parece estar relacionado con la falta de espacio vertical.
Que puedo hacer ?
Respuestas:
Después de (demasiado) investigación, me topé con la excelente respuesta de Neil Traft .
Adaptar su trabajo para el
GridView
ha sido muy fácil.ExpandableHeightGridView.java:
Inclúyalo en su diseño de esta manera:
Por último, solo necesita pedirle que se expanda:
fuente
Después de usar la respuesta de @tacone y asegurarme de que funcionara, decidí intentar acortar el código. Este es mi resultado. PD: Es el equivalente a tener el booleano "expandido" en la respuesta de tacones siempre establecido en verdadero.
fuente
Otro enfoque similar que funcionó para mí es calcular la altura de una fila y luego con datos estáticos (puede adaptarlos para paginar) puede calcular cuántas filas tiene y cambiar el tamaño de la altura de GridView fácilmente.
Use este código después de configurar el adaptador y cuando se dibuje GridView o obtendrá height = 0.
fuente
int rows = items / columns + 1;
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
Los tacones encontrados responden útil ... así que lo porté a C # (Xamarin)
fuente
Simplemente calcule la altura para AT_MOST y configúrelo a medida. Aquí GridView Scroll no funcionará así. Necesita usar la Vista de desplazamiento vertical explícitamente.
fuente