Android官方是不建议ScrollView嵌套ListView的,官方有如下解释:
大概的意思是,不应该使用ScrollView嵌套ListView的,因为ListView会管理属于自己的垂直滚动。更重要的是,如果你这样做了,所有listview重要的优化都会被抵消掉,listview会被迫显示所有的item填满由ScrollView提供的容器。
实现ScrollView嵌套ListView的效果,有以下解决方案:
可以把非listView部分控件当成HeadView或FootView添加到Listview,或者把它当成Listview 子item布局的一部分,添加到ListView里面,充分利用ListView可以放多个不同布局的功能。
非得要用ScrollView嵌套ListView,有以下解决方案:
当ScrollView在嵌套ListView时,一般会出现ListView无法完全显示的问题,解决此问题有以下方案:
1.通过计算ListView每个item的高度,进行累加,设置ListView的LayoutParams.height,具体代码,百度就能找到好多。但这种方法有两个弊端:- tem的根布局必须是LinearLayout的,如果是其他布局会报错,大概是在调用item.measure()方法计算高度时报错;
- 在item包含textview,并且textview显示多行文本时,此方法计算得到的高度是不准确的。
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
来使ListView可完全显示。意思大概是,父控件你必须得腾出给我ListView最大的空间是Integer.MAX_VALUE >> 2,那么我才不至于不能完全显示。至于为什么是这个值,而不是别的值,我还没有研究出来。
以上仅是个人看法,如有不同意见,可以讨论。多谢。。。。