簡體   English   中英

如何使我的列表視圖行的高度不同

[英]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>

更新:

檢查這個答案

https://stackoverflow.com/a/7513423/1932105

在此處輸入圖片說明

您將TextView限制為最多2行。 它永遠不會比現在增長更多。 刪除android:maxLines="2" 它應該自動工作。

對我來說,訣竅不是設置高度-而是設置minHeight。 必須將其應用於自定義適配器用來呈現每一行的任何布局的根視圖。

資料來源: https : //stackoverflow.com/a/7368439/2498729

android:textAppearance="?android:attr/textAppearanceLarge" 

似乎沒有效果。

android:minHeight="?android:attr/listPreferredItemHeight" 

為我改變了身高

資料來源: https : //stackoverflow.com/a/4274505/2498729

看來您必須在文本視圖為空時使它們的可見性變為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM