首页 > listview重新计算高度问题

listview重新计算高度问题

动态加载3条数据,listview出现这种情况。我重新计算的代码如下:

public static void resetListViewHeight(ListView listView) {

    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }
    int totalHeight = 0;
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0); //计算子项view的宽高
        totalHeight += listItem.getMeasuredHeight();
    }
    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}

listview的子项布局用的是linearlayout。请问大神们是怎么回事?

ListView 灵活性太高了,你这个效果完全可以使用原生的ListView来实现。


将xml中的ListView改用下面的ListViewForScrollView试一下。

//ScrollView中嵌入ListView,让ListView全显示出来 
public class ListViewForScrollView extends ListView{

    public ListViewForScrollView(android.content.Context context,android.util.AttributeSet attrs){
    super(context, attrs);
}

//设置不滚动
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
        {
            int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
            MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, expandSpec);
    }
}  
【热门文章】
【热门文章】