Android 动态列表项高度
如何以编程方式设置ListItems的高度和/或如何以编程方式创建ListItems?我目前正在使用带有自定义适配器的自定义ListItem.xml,但是ListItems只有固定的高度。这会产生大量未使用的空间,因为ListItems没有相同的内容。Android 动态列表项高度,android,listview,listitem,Android,Listview,Listitem,如何以编程方式设置ListItems的高度和/或如何以编程方式创建ListItems?我目前正在使用带有自定义适配器的自定义ListItem.xml,但是ListItems只有固定的高度。这会产生大量未使用的空间,因为ListItems没有相同的内容。 有解决此问题的方法吗?您应该使用自定义数组适配器,并且根据项目的内容,您可以更改itemView的高度。你可以在谷歌上找到一些例子 在arrayAdapter中,您可以检查是否存在字段,并将此“field view”高度设置为0,例如,或vi
有解决此问题的方法吗?您应该使用自定义数组适配器,并且根据项目的内容,您可以更改itemView的高度。你可以在谷歌上找到一些例子 在arrayAdapter中,您可以检查是否存在字段,并将此“field view”高度设置为0,例如,或view.INVISIBLE 我编辑了更详细的版本: 在适配器中有:
getView(int位置、视图转换视图、视图组父级)
您可以根据需要修改convertView
以指定更多或更少的高度。如果你不发布一些代码,我会非常抱歉。试试这个:
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
int totalHeight=0;
int desiredWidth=MeasureSpec.makeMeasureSpec(listView.getWidth(),最多测量一次);
对于(int i=0;i
请看这个链接,这将对您有所帮助
请发布一些代码……您的示例也使用ListItem.xml,但这对我没有帮助。正如我所说,我的ListItems的内容是不同的,因此我需要一个解决方案以编程方式设置高度。