这个问题可能有点具体,我发现这个问题很难回答,但我会尽我所能解释清楚。
我开发了一个可以滑动打开的导航菜单,它通过监听活动中主容器上的滚动手势来实现。这可以在下面看到。
findViewById(R.id.maincontainer).setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
mGestureDetector.onTouchEvent((event));
if(event.getAction() == MotionEvent.ACTION_UP){
animateMenu(findViewById(R.id.navMenu), !menuShouldOpen);
menuShouldOpen = false;
}
return true;
}
});
private class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float goTo = defMenuTranslation;
float difference = e2.getX() - e1.getX();
ObjectAnimator animation;
goTo += difference;
if (goTo <= 0f) {
findViewById(R.id.navMenu).setTranslationX(goTo);
}
menuShouldOpen = goTo > defMenuTranslation / 3;
return super.onScroll(e1, e2, distanceX, distanceY);
}
}
我的问题是,容器中有一个片段,其中包含一个覆盖整个屏幕的滚动视图。因为scrollview需要手势,所以菜单的手势控件将不起作用。有没有一种方法可以让这两者同时发挥作用?我的意思是,向上和向下的手势会像往常一样滚动滚动视图,但是向两边的手势会滚动我的菜单。
我尝试将touch listener附加到容器的同级,而不是容器本身,但效果相反,您只能使用手势打开菜单,滚动视图不会移动。
我相信这个问题归根结底是我是否能同时倾听多个观点的手势?
暂无答案!
目前还没有任何答案,快来回答吧!