【问题标题】:Pass touch event from NestedScrollView to parent view's将触摸事件从 NestedScrollView 传递到父视图
【发布时间】:2017-04-28 17:49:30
【问题描述】:

我在 NestedScrollView 下方有一个 ViewPager,宽度有一些顶部填充,还有 clipToPadding(false) 和透明背景(如图片)。

我的 ViewPager 无法获取触摸事件并且不起作用。

我该如何解决这个问题?

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

NestedScrollView

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

解决方案:

通过覆盖 NestedScrollView 和覆盖 onTouchEvent 解决了这个问题。 (感谢@petrumo

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);
    }

}

【问题讨论】:

  • 这应该是在讨论布局结构时图像外观的新标准。
  • 无论如何,当滚动视图消失时,Viewpager 是否工作?我怀疑滚动视图在到达 Viewpager 之前拦截了触摸事件。
  • 我有类似whatsapp的个人资料片段,类似collapsingToolbar的东西
  • @DeeV 是的,它有效。当我将 viewpager 放在滚动视图的顶部时,它也可以工作。
  • 可以选择使用 代替 topPadding 吗?

标签: android android-viewpager touch-event android-nestedscrollview


【解决方案1】:

对于这种情况有一个解决方法,你可以在嵌套滚动视图中覆盖 onInterceptTouchEvent 和 onTouchEvent。有帖子解释了如何做到这一点,https://developer.android.com/training/gestures/viewgroup.htmlhttp://neevek.net/posts/2013/10/13/implementing-onInterceptTouchEvent-and-onTouchEvent-for-ViewGroup.html。当您拦截事件时,根据位置和您的自定义逻辑,您将决定不使用触摸将其留给 viewpager 或让默认的滚动视图逻辑处理它。

我不赞成这种解决方案,但正如您所解释的,您需要让 NestedScrollview 覆盖 viewPager,除非您可以重新考虑限制

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多