我在 ViewPager 中有一个水平 ScrollView。为了防止在到达 ScrollView 末尾时滚动 ViewPager,我按照 SO 上的提示使用此类:
public class CustomScrollView extends HorizontalScrollView {
public CustomScrollView(Context p_context, AttributeSet p_attrs) {
super(p_context, p_attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent p_event) {
return true;
}
@Override
public boolean onTouchEvent(MotionEvent p_event) {
if (p_event.getAction() == MotionEvent.ACTION_MOVE
&& getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(true);
}
return super.onTouchEvent(p_event);
}
}
onInterCeptTouchEvent
似乎消耗了对该视图及其内部所有内容的任何点击。当我投入Views
其中ScrollView
时,他们的OnClickListener
的 s 不会被调用。
当我让onInterceptTouchEvent
return false 时,OnClickListener
s 被调用,但ScrollView
不能滚动。
我怎样才能把可点击的视图放在里面ScrollView
?
编辑:在实现 Rotem 的答案后,onClickListener
工作正常,但它不仅会触发点击事件,还会触发其他事件,比如投掷。如何防止这种情况?