现在,如果列表项目的高度为2行,则所有行的高度为两行
如何使行的高度与其他行无关。
的ListView
<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 patern我没有改变高度或任何东西
答案 0 :(得分: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
答案 1 :(得分:3)
您将TextView
限制为最多包含2行。它永远不会超过这个。删除android:maxLines="2"
。它应该自动运行。
答案 2 :(得分:3)
对我而言,诀窍并不是设定高度 - 而是设定了 了minHeight。这必须应用于任何布局的根视图 您的自定义适配器用于渲染每一行。
来源:https://stackoverflow.com/a/7368439/2498729
android:textAppearance="?android:attr/textAppearanceLarge"
似乎没有效果。
android:minHeight="?android:attr/listPreferredItemHeight"
改变了我的身高
答案 3 :(得分: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);
答案 4 :(得分:1)
如果您不受TextView MaxLine限制,请删除android:maxLines="2"
这将自动调整列表的高度。
如果您正在寻找增加一个特定行的高度而不依赖于其他行。为列表设置适配器值后。获取列表
final ListView lv = getListView();
然后形成lv
以lv.getItemIdAtPosition(position)
或任何最适合您代码的类似逻辑获取特定行。并在您查找时以编程方式更改行外观。感谢。