在android中有时候我们会因为项目需求的问题,需要在ScrollView中嵌套ListView,或者是在ListView中嵌套ListView。此时因为ScrollView或ListView本身就具有滑动特性,导致它们在嵌套的时候ListView出现单行显示的问题,这就是嵌套冲突,解决的方案就是子ListView必须要设置它的高度,即我们要展开子ListView的所有条目,这样我们就可以解决掉关于嵌套的冲突。解决方案的代码如下:
public class NoScrollListView extends ListView {
public NoScrollListView(Context context) {
super(context);
}
public NoScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}