当ScrollView嵌套ListView时,使用listview设置setAdpter后,需要重新设置listview控件的宽高。在网上尝试了一些方法,重新设置高度之后,仍然不能完全显示,经过调试,使用下面的方法,可以使ListView完全显示。在setAdapter后,使用UtilityHelper .setListViewHeightBasedOnChildren(listview)调用。
public class UtilityHelper {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int singleHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
singleHeight = listItem.getLayoutParams().height;
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = singleHeight *listAdapter.getCount();
listView.setLayoutParams(params);
}
}