解决显示不全的问题:
Item嵌套的ListView替换成重写的ListView的onMeasure方法:
public class CustomList extends ListView {
public CustomList(Context context) {
super(context);
}
public CustomList(Context context, AttributeSet attrs) {
super(context, attrs);
}
//重写此方法
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
解决不能滑动的问题:
Item嵌套的ListView替换成重写的ListView的onInterceptTouchEvent方法:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
//父控件交出ontouch权限,不能滚动
case MotionEvent.ACTION_DOWN:
setParentScroll(false);
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 父控件重新获取onTouch权限
setParentScroll(true);
break;
}
return super.onInterceptTouchEvent(ev);
}
// 设置父控件是否可以获取到触摸处理权限
private void setParentScroll(boolean flag){
getParent().requestDisallowInterceptTouchEvent(!flag);
}