如何以编程方式设置ListItem的高度和/或如何以编程方式创建ListItem?我目前正在使用自定义ListItem.xml和自定义适配器,但ListItems只有一个固定的高度。这会产生大量未使用的空间,因为ListItems没有相同的内容。 有没有解决这个问题的方法?
答案 0 :(得分:0)
您应该使用自定义数组适配器,并根据项目的内容,您可以更改itemView的高度。你可以在谷歌找到一些例子。
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
以指定更高或更低的高度。如果你不发布一些代码我不能帮助更多抱歉。
答案 1 :(得分: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