办法就是,高度不能写wrap_centent或者match_parent
一定要写死,根据需求动态写死或者静态写死,静态写死不说了,说动态的.
下面是设置ExpandableListView的高度,就是设置adapter后,计算需要的高度,在重新设置它的高度
public static void setListViewHeightBasedOnChildren(ExpandableListView listView) {
//获取ExpandListView对应的Adapter
ExpandableListAdapter listAdapter = listView.getExpandableListAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getGroupCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目
View groupItem = listAdapter.getGroupView(i, true, null, null);
groupItem.measure(0, 0);
totalHeight += groupItem.getMeasuredHeight();
// the childrenViews height
for(int j = 0,length = listAdapter.getChildrenCount(i); j < length; j ++){
View child = (View) listAdapter.getChildView(i, j, false, null, null);
child.measure(0, 0);
totalHeight += child.getMeasuredHeight();
}
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
// 加上间隔的高度
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getGroupCount() - 1));
//listView.getDividerHeight()获取子项间分隔符占用的高度
//params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
然后ListView不写了,ExpandableListView都会了ListView不会,那我无话可说…