Ich versuche, 8 Elemente in einer Rasteransicht anzuzeigen. Leider ist die Höhe der Rasteransicht immer zu gering, sodass nur die erste Zeile und ein kleiner Teil der zweiten angezeigt werden.
Durch die Einstellung android:layout_height="300dp"
funktioniert es. wrap_ content
und fill_parent
anscheinend nicht.
Meine Rasteransicht:
<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" />
Meine Artikel Ressource:
<?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>
Das Problem scheint nicht mit einem Mangel an vertikalem Raum zu tun zu haben.
Was kann ich tun ?
Antworten:
Nach (zu viel) Recherche bin ich auf die hervorragende Antwort von Neil Traft gestoßen .
Die Anpassung seiner Arbeit an das
GridView
war kinderleicht.ExpandableHeightGridView.java:
Fügen Sie es wie folgt in Ihr Layout ein:
Zuletzt müssen Sie es nur bitten, um zu erweitern:
quelle
Nachdem ich die Antwort von @tacone verwendet und sichergestellt hatte, dass sie funktionierte, beschloss ich, den Code kurzzuschließen. Das ist mein Ergebnis. PS: Es ist das Äquivalent dazu, dass die boolesche "erweiterte" Antwort in Tacones immer auf "true" gesetzt ist.
quelle
Ein anderer ähnlicher Ansatz, der für mich funktioniert hat, besteht darin, die Höhe für eine Zeile zu berechnen und dann mit statischen Daten (Sie können sie an die Paginierung anpassen) zu berechnen, wie viele Zeilen Sie haben, und die Größe der GridView-Höhe einfach zu ändern.
Verwenden Sie diesen Code, nachdem Sie den Adapter eingestellt haben und wenn die GridView gezeichnet wird, oder Sie erhalten height = 0.
quelle
int rows = items / columns + 1;
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
Gefundene Tacones antworten hilfreich ... also habe ich es auf C # (Xamarin) portiert
quelle
Berechnen Sie einfach die Höhe für AT_MOST und setzen Sie auf on Measure. Hier funktioniert GridView Scroll nicht so. Die vertikale Bildlaufansicht muss explizit verwendet werden.
quelle