你应该处理 onInterceptTouchEvent。当您单击 HorizontalScrollview 时,您应该在 onInterceptTouchEvent 中返回 false,否则返回 true;
这是,我是怎么做的
1)使 CustomViewpager 扩展 ViewPager 2)像这样覆盖 onInterceptTouchEvent
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (childId > 0) {
View scroll = findViewById(childId);
if (scroll != null) {
Rect rect = new Rect();
scroll.getHitRect(rect);
if (rect.contains((int) event.getX(), (int) event.getY())) {
return false;
}
}
}
return true;
}
private int childId;
public void setChildId(int id) {
this.childId = id;
}
3)像这样在xml中使用customViewpager而不是viewpager
<com.packagename.CustomViewpager .....
4)并从这样的活动中设置childId
CustomViewpager cv=(CustomViewpager)findViewById(R.id.id_of_customviewpager);
cv.setChildId(R.id.id_of_customviewpager);
5)完成
逻辑是当你触摸 HorizontalScrollview 时给孩子触摸,否则给父母触摸