转载地址:http://www.2cto.com/kf/201505/403105.html
一种解决办法:
有网友试过,将ListView的layout_height设置为一个定值,比如说400dp,就可以有滑动的效果。 但是ListView只能显示部分元素,这不是我们想要的结果。 所以就需要一种方法可以根据ListView中Item数量,动态设置ListView的height,使全部item得到显示。最终解决方法:
/**
* scrollview与listview合用会出现listview只显示一行多点。此方法是为了定死listview的高度就不会出现以上状况
* 算出listview的高度
*/
public static void setListViewHeight(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(1, 1);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)) + listView.getPaddingTop() + listView.getPaddingBottom();
listView.setLayoutParams(params);
}
第二种解决办法:
重写onmeasure方法
@Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //加上下面的话即可实现listview在scrollview中滑动 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); System.out.println("expandSpec = " + expandSpec); super.onMeasure(widthMeasureSpec, expandSpec); }