繁体   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