我在滚动视图中添加了一个customView和customView。现在我想区分两个触摸事件。我的问题是当尝试滚动,customView也获得触摸事件,当我尝试更改customView时,滚动视图获取事件。
提前致谢
答案 0 :(得分:2)
您可以将触摸侦听器设置为子视图,然后在onTouch()事件中,您可以阻止拦截父项的触摸事件。
即
v.setOnTouchListener(new OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
@Override
public boolean onTouch(View v, MotionEvent event) {
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
关于第二个问题,我并不确切知道您使用自定义视图做了什么,但也许您想要使用点击事件,因为它使用起来并不方便用户使用ontouch
和onclick
中的不同逻辑,因为它总会意外启动。
答案 1 :(得分:1)
boolean isScrolling = false;
myScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY)
isScrolling = scrollX != oldScrollX;
//用于垂直滚动
});
//然后onTouchListener
if(!isScrolling){//对非滚动状态执行操作}