Java 如何使我的listview行具有不同的高度

Java 如何使我的listview行具有不同的高度,java,android,listview,Java,Android,Listview,现在,如果列表项的高度为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" > &l

现在,如果列表项的高度为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>

<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 there没有什么特别的,只是一个viewholder Patren我不改变高度或任何东西

看起来你必须使文本视图的可见性成为
视图。当它们为空时,消失了。您可以在适配器实现中实现它

pointsView.setText(pointsText);
pointsView.setVisibility(TextUtils.isEmpty(pointsText) ? View.GONE : View.VISIBLE);
但是要小心,因为您的视图处于
相对视图中,并且当锚定视图获得可见性时,其规则可能会停止工作
视图。消失了

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

pointsView.setTextSize(TextUtils.isEmpty(pointsText) ? 0 : defaultSize);

你为什么不试着把身高设为0磅,体重设为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>

更新:

检查这个答案


您将
文本视图限制为最多两行。它将永远不会增长超过这一点。删除android:maxLines=“2”
。它应该自动工作

对我来说,诀窍不是设置高度,而是设置高度 米海特。这必须应用于任何布局的根视图 自定义适配器正在用于渲染每一行

资料来源:

似乎没有效果

为我改变了高度


来源:

如果您不受TextView MaxLine的限制,请删除
android:maxLines=“2”
这将自动调整列表的高度。
如果您希望独立于其他行增加某一行的高度。设置列表的适配器值后。获取列表
final ListView lv=getListView()

然后形成
lv
通过
lv.getItemIdAtPosition(position)
或任何最适合您的代码的类似逻辑来获取特定行。并在查找时以编程方式更改行外观。谢谢。

这使得更新的行不可见。高度已设置为包裹内容,但不起作用尝试删除android:layout\u weight=“0”不,也不起作用,它们不可见但仍然可以单击。我甚至收到一个lint错误,说它们将是不可见的。将LinearLayout的方向设置为垂直,应该有助于解决不可见问题。:)你能发布一些你想要达到的目标的图片吗?@sriramramamani-Ahmed-Ekri的回答有一个我想要达到的高度的图片wrapping@codefish578841441如果您想创建每个行高度相互独立的列表视图,那么您需要创建自己的列表视图(也就是说,将膨胀视图放在滚动视图中,并处理每个原始视图上的单击事件)…通过这样做,您可以创建任意高度的原始视图,具体取决于您的文本行数。@codefish578841441:请发布您的customadapter代码