造成的原因:由于 ListView在scrollView中无法正确计算它的大小, 故只显示一行。
解决思路:
1,重写 ListView,覆盖 onMeasure()。
2,动态设置 listView高度,不需要重写 listView。(比较复杂,不推荐。)
3,在xml文件中,直接将Listview的高度写死。(适合 listView不扩展。)
4,避免ScrollView嵌套Listview,比如使用listview的addHeader()
我使用的是第1种方法,有时第3种。
public class MyListView extends ListView {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// 加上这句代码就行了。
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
网友评论