5

现在,如果有一个高度为 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 没有什么特别的,只是一个视图模式我不改变高度或任何东西

4

5 回答 5

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>

更新:

检查这个答案

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

在此处输入图像描述

于 2013-08-28T10:45:53.587 回答
3

对我来说,诀窍不是设置高度,而是设置 minHeight。这必须应用于您的自定义适配器用于呈现每一行的任何布局的根视图。

来源: https ://stackoverflow.com/a/7368439/2498729

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

似乎没有效果。

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

为我改变了高度

来源:https ://stackoverflow.com/a/4274505/2498729

于 2013-08-30T19:11:00.733 回答
3

您将其限制TextView为最多 2 行。它永远不会增长得更多。删除android:maxLines="2". 它应该自动工作。

于 2013-08-30T19:00:12.313 回答
2

看起来你必须让你的文本视图View.GONE在它们为空时可见。您可以在适配器实现中执行此操作。

pointsView.setText(pointsText);
pointsView.setVisibility(TextUtils.isEmpty(pointsText) ? View.GONE : View.VISIBLE);

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

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

pointsView.setTextSize(TextUtils.isEmpty(pointsText) ? 0 : defaultSize);
于 2013-08-14T17:08:10.507 回答
1

如果您不受 TextView MaxLine 的限制,请删除android:maxLines="2"它会自动调整列表的高度。
如果您正在寻找独立于其他行增加某一特定行的高度。为列表设置适配器值后。获取列表
final ListView lv = getListView(); ,然后形成lv获取特定行
lv.getItemIdAtPosition(position)或最适合您的代码的任何类似逻辑。并在您查找时以编程方式更改行外观。谢谢。

于 2013-09-04T10:16:09.303 回答