[英]How can I adjust the row heights in a ListView so they take up the remaining space?
[英]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>
更新:
检查这个答案
您将TextView
限制为最多2行。 它永远不会比现在增长更多。 删除android:maxLines="2"
。 它应该自动工作。
对我来说,诀窍不是设置高度-而是设置minHeight。 必须将其应用于自定义适配器用来呈现每一行的任何布局的根视图。
资料来源: https : //stackoverflow.com/a/7368439/2498729
android:textAppearance="?android:attr/textAppearanceLarge"
似乎没有效果。
android:minHeight="?android:attr/listPreferredItemHeight"
为我改变了身高
看来您必须在文本视图为空时使它们的可见性变为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.