Android 将触摸事件从NestedScrollView传递到父视图';s

Android 将触摸事件从NestedScrollView传递到父视图';s,android,android-viewpager,touch-event,android-nestedscrollview,Android,Android Viewpager,Touch Event,Android Nestedscrollview,我在NestedScrollView宽度下面有一个ViewPager,上面有一些填充,CliptPadding(false)和透明背景(如图像) 我的ViewPager无法获取触摸事件,无法工作 我怎样才能解决这个问题 (我无法更改结构,也无法将ViewPager移动到NestedScrollView的上方或将TopMargin设置为NestedScrollView) 嵌套滚动视图 nestedScrollView = new NestedScrollView(getContext());

我在NestedScrollView宽度下面有一个ViewPager,上面有一些填充,CliptPadding(false)和透明背景(如图像)

我的ViewPager无法获取触摸事件,无法工作

我怎样才能解决这个问题

(我无法更改结构,也无法将ViewPager移动到NestedScrollView的上方或将TopMargin设置为NestedScrollView)

嵌套滚动视图

nestedScrollView = new NestedScrollView(getContext());
nestedScrollView.setFillViewport(true);
nestedScrollView.setLayoutParams(scrollParams);
nestedScrollView.setClipToPadding(false);

解决方案: 通过覆盖NestedScrollView和覆盖onTouchEvent解决了此问题。 (感谢)


对于这种情况,有一种解决方法,您可以在nestedscrollview中重写onInterceptTouchEvent和onTouchEvent。有一些帖子解释了怎么做,还有。截获事件时,根据位置和自定义逻辑,您将决定不使用触摸将其留给viewpager,或让默认的scrollview逻辑处理它


我不赞成这种解决方案,但正如您所解释的,您需要让NestedScrollview覆盖viewPager,除非您可以重新考虑限制,这应该是讨论布局结构时图像外观的新标准。无论如何,当scrollview消失时,viewPager是否工作?我怀疑scrollview在到达Viewpager之前拦截了触摸事件collapsingToolbar@DeeV是的,它有效。当我将viewpager置于scrollview的顶部时,它也可以工作。是否可以选择使用而不是添加?我很高兴能提供帮助
public class MyNestedScrollView extends NestedScrollView {
    private boolean topZone = false;

    public MyNestedScrollView(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if(ev.getAction() == MotionEvent.ACTION_DOWN ){
            topZone = (getPaddingTop() - getScrollY() >  ev.getY());
        }

        if(topZone){
            if(ev.getAction() == MotionEvent.ACTION_UP){
                topZone = false;
            }
            return false;
        }
        return super.onTouchEvent(ev);
    }

}