Saya mencoba untuk menampilkan 8 item di dalam gridview. Sayangnya, ketinggian tampilan kisi selalu terlalu kecil, sehingga hanya menampilkan baris pertama, dan sebagian kecil dari baris kedua.
Pengaturan android:layout_height="300dp"
membuatnya bekerja. wrap_ content
dan fill_parent
ternyata tidak.
Tampilan kisi saya:
<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" />
Sumber daya item saya:
<?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>
Masalah tersebut sepertinya tidak terkait dengan kurangnya ruang vertikal.
Apa yang dapat saya ?
Jawaban:
Setelah (terlalu banyak) penelitian, saya menemukan jawaban yang sangat bagus dari Neil Traft .
Menyesuaikan karyanya untuk yang
GridView
sudah mati sangat mudah.ExpandableHeightGridView.java:
Sertakan dalam tata letak Anda seperti ini:
Terakhir Anda hanya perlu memintanya untuk memperluas:
sumber
Setelah menggunakan jawaban dari @tacone dan memastikannya berhasil, saya memutuskan untuk mencoba mempersingkat kodenya. Ini hasil saya. PS: Ini setara dengan meminta boolean "diperluas" dalam jawaban nada yang selalu disetel ke benar.
sumber
Pendekatan serupa lainnya yang berhasil untuk saya, adalah menghitung tinggi untuk satu baris dan kemudian dengan data statis (Anda dapat menyesuaikannya menjadi paginasi) Anda dapat menghitung berapa banyak baris yang Anda miliki dan mengubah ukuran tinggi GridView dengan mudah.
Gunakan kode ini setelah mengatur adaptor dan ketika GridView digambar atau Anda akan mendapatkan tinggi = 0.
sumber
int rows = items / columns + 1;
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
Found tacones answer membantu ... jadi saya porting ke C # (Xamarin)
sumber
Cukup hitung tinggi untuk AT_MOST dan setel ke ukuran. Di sini, GridView Scroll tidak akan berfungsi. Perlu menggunakan Tampilan Scroll Vertikal secara eksplisit.
sumber