From 8f0326d0c0e040c6f6be07a88b891bc90eb06ac9 Mon Sep 17 00:00:00 2001
From: Ellen2018 <1961075191@qq.com>
Date: Thu, 27 Jun 2019 21:03:13 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9A=90=E6=82=A3=E7=9A=84?=
=?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../TableHorizontalScrollView.java | 100 ++++++++++++++++++
.../src/main/res/layout/layout_view_table.xml | 8 +-
2 files changed, 104 insertions(+), 4 deletions(-)
create mode 100644 tableview/src/main/java/com/ellen/tableview/supertableview/adapter/superadapter/TableHorizontalScrollView.java
diff --git a/tableview/src/main/java/com/ellen/tableview/supertableview/adapter/superadapter/TableHorizontalScrollView.java b/tableview/src/main/java/com/ellen/tableview/supertableview/adapter/superadapter/TableHorizontalScrollView.java
new file mode 100644
index 0000000..6c1cdd5
--- /dev/null
+++ b/tableview/src/main/java/com/ellen/tableview/supertableview/adapter/superadapter/TableHorizontalScrollView.java
@@ -0,0 +1,100 @@
+package com.ellen.tableview.supertableview.adapter.superadapter;
+
+import android.content.Context;
+import android.os.Build;
+import android.support.annotation.RequiresApi;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.HorizontalScrollView;
+
+/**
+ * 解决与viewpager的滑动冲突问题
+ *
+ * @author: WEI
+ * @date: 2018/6/25
+ */
+public class TableHorizontalScrollView extends HorizontalScrollView {
+ private final static String TAG = "CusHorizontalScrollView";
+
+ public TableHorizontalScrollView(Context context) {
+ super(context);
+ }
+
+ public TableHorizontalScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TableHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ public TableHorizontalScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ return super.onInterceptTouchEvent(ev);
+ }
+
+ /**
+ * 可以在此处理冲突
+ * @param ev
+ * @return
+ */
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ // 还没滑到右边,请求父控件不要拦截我的事件,事件自己处理 true ;已经滑到右边,则事件交由父控件处理 false。
+// getParent().requestDisallowInterceptTouchEvent(!isScrollToRight());
+ return super.dispatchTouchEvent(ev);
+ }
+
+ /**
+ * 也可以在此处理冲突
+ * @param ev
+ * @return
+ */
+ @Override
+ public boolean onTouchEvent(MotionEvent ev)
+ {
+ switch (ev.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ break;
+
+ case MotionEvent.ACTION_MOVE:
+ if (isScrollToLeft() || isScrollToRight())
+ {
+ // 把事件交给父控件处理,例如:viewpager滑动
+ getParent().requestDisallowInterceptTouchEvent(false);
+ }
+ break;
+
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ // 请求父控件可以拦截事件
+ getParent().requestDisallowInterceptTouchEvent(false);
+ break;
+
+ default:
+ }
+ return super.onTouchEvent(ev);
+ }
+
+ /**
+ * 是否已经滑到了最右边
+ *
+ * @return
+ */
+ private boolean isScrollToRight() {
+ return getChildAt(getChildCount() - 1).getRight() == getScrollX() + getWidth();
+ }
+
+ /**
+ * 是否已经滑到了最左边
+ * @return
+ */
+ private boolean isScrollToLeft() {
+ return getScrollX() == 0;
+ }
+}
\ No newline at end of file
diff --git a/tableview/src/main/res/layout/layout_view_table.xml b/tableview/src/main/res/layout/layout_view_table.xml
index 0c8cfa6..7c81ee7 100644
--- a/tableview/src/main/res/layout/layout_view_table.xml
+++ b/tableview/src/main/res/layout/layout_view_table.xml
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+
-
-
+