Android 当使用ViewPager和PassByValue浏览页面时,将执行onTouchEvent

Android 当使用ViewPager和PassByValue浏览页面时,将执行onTouchEvent,android,android-viewpager,touch-event,pass-by-value,Android,Android Viewpager,Touch Event,Pass By Value,在我的项目中,我使用onTouchEvent检测屏幕上的触摸并相应地执行操作,并使用viewPager执行滑动操作。问题是在刷卡时触摸操作正在执行。因此,从解决它中找到解决方案。但我的新问题是,一旦执行TouchEvent.Action\u up,触摸就会被禁用。代码如下: parent.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) {

在我的项目中,我使用onTouchEvent检测屏幕上的触摸并相应地执行操作,并使用viewPager执行滑动操作。问题是在刷卡时触摸操作正在执行。因此,从解决它中找到解决方案。但我的新问题是,一旦执行TouchEvent.Action\u up,触摸就会被禁用。代码如下:

parent.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

        switch(event.getAction())
        {
         case MotionEvent.ACTION_MOVE: 
                awesomePager.requestDisallowInterceptTouchEvent(true);
                break;
        case MotionEvent.ACTION_UP:
            awesomePager.requestDisallowInterceptTouchEvent(true);
             if(flag)
             {
               upperdock.setClickable(false);
                upperdock.bringToFront();
                tocparent.bringToFront();
                tocbottom.bringToFront();
                upperdock.setVisibility(RelativeLayout.VISIBLE);
                tocparent.setVisibility(LinearLayout.VISIBLE);
                tocbottom.setVisibility(LinearLayout.VISIBLE);
                flag=false;
             }
             else
             {

                parent.bringToFront();
                upperdock.setVisibility(RelativeLayout.INVISIBLE);
                tocparent.setVisibility(LinearLayout.INVISIBLE);
                tocbottom.setVisibility(LinearLayout.INVISIBLE);
                flag=true;
             }
             break;

        case MotionEvent.ACTION_CANCEL:
            awesomePager.requestDisallowInterceptTouchEvent(false);
             break;
        default:
            break;
        }

        return false;
    }
});

在上面的代码中,如果我返回false,则不会执行操作。。如果我返回true,则不会执行取消操作。。这就是按值传递的问题。

我为此更改了一些内容

不用
awesomePager.requestDisallowWinterCeptTouchEvent(false)
, 只需使用
返回true

活动中定义一个布尔sroll

设置sroll=positionOffset!=0.0查看页面中。打开页面时滚动 我覆盖了onTouchEvent,其中视图页面中的视图


现在,您可以检查(event.getAction()==MotionEvent.ACTION\u UP&&!sroll)
以确定事件是否会被触发

我遇到了相同的问题!对我来说,这很有效

case MotionEvent.ACTION_MOVE: {
        getParent().requestDisallowInterceptTouchEvent(false);
        break;
    }

 case MotionEvent.ACTION_CANCEL:{
        getParent().requestDisallowInterceptTouchEvent(true);
        break;

}

case MotionEvent.ACTION_UP:{

 //delete  awesomePager.requestDisallowInterceptTouchEvent(true);
 //you don't need it here!
                 .
                 .
            do your stuff....
                 .

}
将你的整个方法作为真实的而非虚假的返回

return true;