将SrollView传过来就完美的解决这个冲突了
/**
* Created by liangls on 2016/6/1.
*/
public class MyGridView extends GridView {
private ScrollView parentScrollView;
public void setParentScrollView(ScrollView parentScrollView) {
this.parentScrollView = parentScrollView;
}
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
setParentScrollAble(false);//当手指触到listview的时候,让父ScrollView交出ontouch权限,也就是让父scrollview
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
setParentScrollAble(true);//当手指松开时,让父ScrollView重新拿到onTouch权限
break;
default:
break;
}
return super.onInterceptTouchEvent(ev);
}
/**
* 是否把滚动事件交给父scrollview
*
* @param flag
*/
private void setParentScrollAble(boolean flag) {
parentScrollView.requestDisallowInterceptTouchEvent(!flag);//这里的parentScrollView就是listview外面的那个scrollview
}
}
本文介绍了一个自定义的GridView类,通过将ScrollView作为父类,完美解决了ListView与ScrollView之间的冲突问题。该类在手指触碰ListView时,会暂时让父ScrollView失去触摸事件的拦截能力,从而避免了滚动冲突,实现流畅的用户体验。
599

被折叠的 条评论
为什么被折叠?



