ScrollView控件只能盛放一个直接子控件(通常情况下盛放一个线性布局LinearLayout,且orientation属性为vertical。若ListView在布局中时,ListView的高度设为适应自身内容(wrap_content),却只显示了1条数据。
究其原因,就是ScrollView滑动事件与ListView滑动事件相互冲突,ListView不能正确地计算高度所致。对于这个问题,通常有两个比较合适的解决方案,先分享如下。
l 解决方案(一):动态设置ListView高度
在.xml布局文件中直接指定ListView的高度,但是ListView中的数据是可变的,其实际高度还需要实际测量。于是我们可以动态地设置ListView的高度。
/**
* 动态地设置ListView的高度
* @param listView
*/
public static void setListViewHeightBasedOnItems(ListView listView) {
if(listView == null) {
return;
}
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}