RT、
要想解决这个问题,有2种解决方案:
1、固定ListView的高度(自己一点点的调试,适当地将高度设置高一点);
2、计算ListView的高度(其实也算是固定高度,只不过是通过代码进行了计算然后再固定)。
方法1就不用多说了,方法2我把代码放上来吧。
public class ListViewUtils{
public static void setHeight(ListView listView){
ListAdapter adapter = listView.getAdapter();
if(adapter == null){
return;
}
int totalHeight = 0;
int count = adapter.getCount();
for(int i = 0; i < count; i++){
View item = adapter.getView(i, null, listView);
item.measure(0, 0);
totalHeight += item.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (count - 1));
listView.setLayoutParams(params);
}
}
在找回listView之后,加上ListViewUtils.setHeight(listView);这句话,那么就可以解决SV与LV嵌套冲突的问题了。
以上代码纯手打,不知道有没有拼错的单词,囧~
反正思路就是这样:通过传入ListView得到适配器Adapter,再通过Adapter的getCount()和getView()方法拿到每一个Item的高度,最后加上分隔线的高度就得到了整个ListView的高度了,最终通过代码设置ListView的高度参数,完工!