小编Ali*_* MH的帖子

将触摸事件从 NestedScrollView 传递给父视图

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

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

我怎么解决这个问题?

(我不能改变我的结构,也不能将 ViewPager 移动到 NestedScrollView 的上方或将 TopMargin 设置为 NestedScrollView)

ViewPager 在一个透明的 NestedScrollView 下面

ViewPager 在一个透明的 NestedScrollView 下面

嵌套滚动视图

nestedScrollView = new NestedScrollView(getContext());
nestedScrollView.setFillViewport(true);
nestedScrollView.setLayoutParams(scrollParams);
nestedScrollView.setClipToPadding(false);
Run Code Online (Sandbox Code Playgroud)

解决方案:

通过覆盖 NestedScrollView 和 Override 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 …
Run Code Online (Sandbox Code Playgroud)

android touch-event android-viewpager android-nestedscrollview

6
推荐指数
1
解决办法
4071
查看次数