描述问题:在NestedScrollView或者ScrollView里面,如果直接使用Listview 的话,会出现这种情况,就是listview只显示一个item,无论Listview里面的数据有多少。
解决方法:创建MyListView继承ListView,然后重新onMeasure方法,这样子就可以解决Listview只显示一条数据的情况。如下
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 这个是用来避免listview只能显示一条数据的
* @param widthMeasureSpec
* @param heightMeasureSpec
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
相关展开的图片:
收缩的图片: