如何以编程方式设置 ListItems 的高度和/或如何以编程方式创建 ListItems?我目前正在使用带有自定义适配器的自定义 ListItem.xml,但 ListItems 只有固定高度。这会产生大量未使用的空间,因为 ListItems 没有相同的内容。这个问题有什么解决办法吗?
问问题
1004 次
2 回答
0
尝试这个:
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();
并查看此链接,这将对您有所帮助 http://kk-brothers.blogspot.in/2011/09/dynamically-change-listview-height.html
于 2013-02-14T12:40:04.100 回答
0
您应该使用自定义数组适配器,并且根据您的项目内容,您可以更改 itemView 的高度。您可以在 google 中找到一些示例。
http://sogacity.com/how-to-make-a-custom-arrayadapter-for-listview/
http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/
在 arrayAdapter 中,您可以检查是否存在字段,并设置此“字段视图”高度 = 0,例如,或 View.INVISIBLE。
我编辑了更详细的版本:
在您的适配器中,您有:getView(int position, View convertView, ViewGroup parent)
您可以根据需要修改convertView
以分配更多或更少的高度。如果你不发布一些代码,我不能帮助更多的抱歉。
于 2013-02-14T12:20:06.393 回答