Java 如何使我的listview行具有不同的高度
现在,如果列表项的高度为2行,则所有行的高度均为2行 如何使行的高度独立于其他行 列表视图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
<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代码