Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ViewPager+;Seekbar:当尝试滑动Seekbar时,viewPager会更改片段_Java_Android_Android Viewpager_Seekbar - Fatal编程技术网

Java ViewPager+;Seekbar:当尝试滑动Seekbar时,viewPager会更改片段

Java ViewPager+;Seekbar:当尝试滑动Seekbar时,viewPager会更改片段,java,android,android-viewpager,seekbar,Java,Android,Android Viewpager,Seekbar,我有一个有三个片段的viewPager。中间(第二个)片段中实现了一个seekBar。当我尝试滑动搜索栏时,viewPager会更改片段 在另一篇帖子中,用户遇到了类似的问题,并提供了解决方案,但该解决方案完全将滑动功能与viewPager分离 当使用seekbar视图时,如何保持两个滑动功能,但聚焦seekbar。我终于找到了答案。如果有人还在问这个问题。 创建SwipeRefreshlayout的自定义类并添加到layout public class CustomSwipeRefre

我有一个有三个片段的viewPager。中间(第二个)片段中实现了一个seekBar。当我尝试滑动搜索栏时,viewPager会更改片段

在另一篇帖子中,用户遇到了类似的问题,并提供了解决方案,但该解决方案完全将滑动功能与viewPager分离


当使用seekbar视图时,如何保持两个滑动功能,但聚焦seekbar。

我终于找到了答案。如果有人还在问这个问题。 创建SwipeRefreshlayout的自定义类并添加到layout

    public class CustomSwipeRefresh extends SwipeRefreshLayout {
    private int mTouchSlop;
    private float mPrevX;
    private boolean isDisabled;

    public CustomSwipeRefresh(Context context, AttributeSet attrs) {
        super(context, attrs);
        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    }

    public void disableInterceptTouchEvent(boolean isDisabled) {
        this.isDisabled = isDisabled;
        getParent().requestDisallowInterceptTouchEvent(isDisabled);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mPrevX = MotionEvent.obtain(event).getX();
                break;
            case MotionEvent.ACTION_MOVE:
                if (isDisabled) {
                    return false;
                }
                float eventX = event.getX();
                float xDiff = Math.abs(eventX - mPrevX);
                if (xDiff > mTouchSlop) {
                    return false;
                }
        }
        return super.onInterceptTouchEvent(event);
    }
}
然后在seekbar的fragment类上,只需添加代码

mswiperefresh.disableInterceptTouchEvent(boolean);
启用和禁用滑动焦点

 @Override
public void onStartTrackingTouch(SeekBar seekBar) {
     mswiperefresh.disableInterceptTouchEvent(true);
      }

 @Override
     public void onStopTrackingTouch(SeekBar seekBar) {
          mswiperefresh.disableInterceptTouchEvent(false);
    }