[英]How can I adjust the row heights in a ListView so they take up the remaining space?
[英]How can I make my listview rows different heights
現在,如果列表項的高度為2行,則所有行的高度均為2行
如何使行的高度獨立於其他行。
列表顯示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/user_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null" />
</LinearLayout>
行
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="1dp"
android:paddingTop="1dp"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:maxLines="2"
android:ellipsize="middle"
android:textColor="@android:color/holo_blue_dark"
android:textStyle="bold" />
<TextView
android:id="@+id/points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:gravity="right"
android:textStyle="bold" />
</LinearLayout>
我正在使用擴展BaseAdapter的自定義適配器。 getView沒有什么特別的,只是一個viewholder模式,我不會改變高度或其他任何東西
為什么不嘗試使身高= 0dp和體重1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="1dp"
android:paddingTop="1dp"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:maxLines="2"
android:ellipsize="middle"
android:textColor="@android:color/holo_blue_dark"
android:textStyle="bold" />
<TextView
android:id="@+id/points"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="right"
android:layout_weight="1"
android:gravity="right"
android:textStyle="bold" />
</LinearLayout>
更新:
檢查這個答案
您將TextView
限制為最多2行。 它永遠不會比現在增長更多。 刪除android:maxLines="2"
。 它應該自動工作。
對我來說,訣竅不是設置高度-而是設置minHeight。 必須將其應用於自定義適配器用來呈現每一行的任何布局的根視圖。
資料來源: https : //stackoverflow.com/a/7368439/2498729
android:textAppearance="?android:attr/textAppearanceLarge"
似乎沒有效果。
android:minHeight="?android:attr/listPreferredItemHeight"
為我改變了身高
看來您必須在文本視圖為空時使它們的可見性變為View.GONE
。 您可以在適配器實現中做到這一點。
pointsView.setText(pointsText);
pointsView.setVisibility(TextUtils.isEmpty(pointsText) ? View.GONE : View.VISIBLE);
但是要小心,因為您的視圖位於RelativeLayout
並且當錨定視圖獲得可見性View.GONE
時,其規則可能會停止工作。
在這種情況下,您可以嘗試將文本大小設置為零,而不是更改視圖的可見性,但是我自己還沒有嘗試過。
pointsView.setTextSize(TextUtils.isEmpty(pointsText) ? 0 : defaultSize);
如果您不受TextView MaxLine的限制,請刪除android:maxLines="2"
這將自動調整列表的高度。
如果您正在尋找增加特定行的高度而又不增加其他行的高度。 在為列表設置適配器值之后。 取得清單
final ListView lv = getListView();
然后形成lv
獲取特定行
lv.getItemIdAtPosition(position)
或最適合您的代碼的任何類似邏輯。 並根據需要以編程方式更改行的外觀。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.