diff --git a/app/src/main/java/androidx/swiperefreshlayout/widget/ViewPagerSwipeRefreshLayout.java b/app/src/main/java/androidx/swiperefreshlayout/widget/ViewPagerSwipeRefreshLayout.java new file mode 100644 index 0000000000..3ce71bd37e --- /dev/null +++ b/app/src/main/java/androidx/swiperefreshlayout/widget/ViewPagerSwipeRefreshLayout.java @@ -0,0 +1,58 @@ +package androidx.swiperefreshlayout.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewConfiguration; + +public class ViewPagerSwipeRefreshLayout extends SwipeRefreshLayout { + + private float startY; + private float startX; + // 记录viewPager是否拖拽的标记 + private boolean mIsVpDragger; + private final int mTouchSlop; + + public ViewPagerSwipeRefreshLayout(Context context, AttributeSet attrs) { + super(context, attrs); + mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + int action = ev.getAction(); + switch (action) { + case MotionEvent.ACTION_DOWN: + // 记录手指按下的位置 + startY = ev.getY(); + startX = ev.getX(); + // 初始化标记 + mIsVpDragger = false; + break; + case MotionEvent.ACTION_MOVE: + // 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false; + if(mIsVpDragger) { + return false; + } + + // 获取当前手指位置 + float endY = ev.getY(); + float endX = ev.getX(); + float distanceX = Math.abs(endX - startX); + float distanceY = Math.abs(endY - startY); + // 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。 + if(distanceX > mTouchSlop && distanceX > distanceY) { + mIsVpDragger = true; + return false; + } + break; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + // 初始化标记 + mIsVpDragger = false; + break; + } + // 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。 + return super.onInterceptTouchEvent(ev); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forum_detail.xml b/app/src/main/res/layout/fragment_forum_detail.xml index e68f9a8040..0293f7ee79 100644 --- a/app/src/main/res/layout/fragment_forum_detail.xml +++ b/app/src/main/res/layout/fragment_forum_detail.xml @@ -18,7 +18,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - @@ -415,7 +415,7 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - +