我在viewpager内部嵌套scrollview,因为我的每个page有可能超出屏幕,并且我都从写了viewpager和scrollview,但是内部的textview和CheckBox以及button相应点击事件的时候有向不及时,
这是我重写的两个控件
有哪位大神指导一下,怎么解决内部的控件点击事件
这是我重写的两个控件
public class MScrollview extends ScrollView {
GestureDetector gestureDetector;
private float xDistance, yDistance, xLast, yLast;
public MScrollview(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@SuppressWarnings("deprecation")
public MScrollview(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
gestureDetector = new GestureDetector(new Yscroll());
setFadingEdgeLength(0);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
return super.onTouchEvent(ev);
}
public MScrollview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if (xDistance <yDistance) {
return true;
}
}
return super.onInterceptTouchEvent(ev);
}
class Yscroll extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// 控制手指滑动的距离
if (Math.abs(distanceY) >= Math.abs(distanceX)) {
return true;
}
return false;
}
}
}
public class MViewPager extends ViewPager {
private float xDistance, yDistance, xLast, yLast;
public MViewPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
switch (arg0.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = arg0.getX();
yLast = arg0.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = arg0.getX();
final float curY = arg0.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if (xDistance>yDistance) {
return true;
}else{
}
}
return super.onInterceptTouchEvent(arg0);
}
}
有哪位大神指导一下,怎么解决内部的控件点击事件