动态加载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);
}
}