0

如何以编程方式设置 ListItems 的高度和/或如何以编程方式创建 ListItems?我目前正在使用带有自定义适配器的自定义 ListItem.xml,但 ListItems 只有固定高度。这会产生大量未使用的空间,因为 ListItems 没有相同的内容。这个问题有什么解决办法吗?

4

2 回答 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 回答