我正嘗試使用GridView中的複選框顯示動態增長的字符串列表,該列表本身位於TableLayout中。如何在添加項目時使GridView適應其高度
我可以在一行中顯示這些「複選框」字符串。我讓用戶在GridView中動態添加新字符串時發生問題。
我創建了一個接收字符串列表的自定義適配器。假設我們有n個字符串。適配器返回'n + 1'表示物品計數;在getView,它返回:
- 用的LinearLayout,本身具有CheckBox和用於第一n項一個EditText視圖,
- 用一個簡單的按鈕的LinearLayout,具有用於一個「+」字幕的'第n + 1項。
到目前爲止好。當單擊「+」按鈕時,我將一個空字符串添加到字符串列表中,並在適配器中調用notifyDataSetChanged。
GridView重繪自己與一個更多的項目。但它保持原來的高度,並創建一個垂直滾動條。我希望GridView擴展其高度(即在屏幕上佔用更多空間並顯示所有項目)。
我試圖將屏幕更改爲垂直LinearLayout而不是TableLayout,但結果是相同的。
這裏是我的屏幕布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<!-- other lines omitted -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/wine_rack_explanation"
android:layout_gravity="center_vertical" />
<GridView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/gvRack"
android:columnWidth="90dp"
android:numColumns="auto_fit" />
</LinearLayout>
<!-- other lines omitted -->
</LinearLayout>
</ScrollView>
從適配器的複選框+字符串項的定義如下:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cbCoordinate"
android:checked="true"
/>
<EditText android:id="@+id/txtCoordinate"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
的「+」按鈕項被這樣定義:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:id="@+id/btnAddBottle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_bottle_caption" />
</LinearLayout>
我試圖在添加項目後在GridView上調用invalidate或invalideViews。在TableLayout和TableRow上也被稱爲invalidate(在屏幕的前一個佈局中)。沒有成功。
任何想法爲什麼GridView拒絕延長其高度?
(請注意,我用的其他的ViewGroup比GridView的完全開放)
我有幾乎完全相同的問題 - 有誰知道如何做到這一點? – 2011-08-17 10:00:19
我認爲它可以幫助他人http://stackoverflow.com/a/23802813/5887689 – 2016-05-29 08:09:59
也許這個答案可以幫助你https://stackoverflow.com/questions/21482989/how-to-assign-wrap-content-as -height-dynamic-loaded-gridview/46350213#46350213 – 2017-09-21 18:01:19