如何使listview行的高度不同

cod*_*441 5 java android listview

现在,如果有一个高度为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>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

我正在使用扩展BaseAdapter的自定义适配器.getView没有什么特别的,只是一个viewholder patern我不改变高度或任何东西

Ahm*_*kri 10

为什么不尝试使高度= 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>
Run Code Online (Sandbox Code Playgroud)

更新:

检查这个答案

/sf/answers/525939641/

在此输入图像描述

  • 尝试将LinearLayout的方向设置为垂直,应该有助于隐身问题.:) (2认同)

Rom*_*zur 2

看起来您必须使文本视图在View.GONE空时可见。您可以在适配器实现中完成此操作。

pointsView.setText(pointsText);
pointsView.setVisibility(TextUtils.isEmpty(pointsText) ? View.GONE : View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)

但要小心,因为RelativeLayout当锚定视图可见时,您的视图已经存在,并且其规则可能会停止工作View.GONE

在这种情况下,您可以尝试将文本大小设置为零,而不是更改视图可见性,但我自己还没有尝试过。

pointsView.setTextSize(TextUtils.isEmpty(pointsText) ? 0 : defaultSize);
Run Code Online (Sandbox Code Playgroud)