From 2cf33868efb6906185b57083f6de2d81ae449a42 Mon Sep 17 00:00:00 2001 From: Sven Braune Date: Mon, 3 Apr 2017 11:46:44 +0200 Subject: [PATCH] # Fixed not executing ClickListener on child views --- .../example/MyItemRecyclerViewAdapter.java | 11 +++++++ .../main/res/layout/match_parent_example.xml | 1 + .../com/swipelibrary/SwipeLayout.java | 30 +++++++------------ 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/kaufland/com/demo/example/MyItemRecyclerViewAdapter.java b/app/src/main/java/kaufland/com/demo/example/MyItemRecyclerViewAdapter.java index 845e161..da00d07 100644 --- a/app/src/main/java/kaufland/com/demo/example/MyItemRecyclerViewAdapter.java +++ b/app/src/main/java/kaufland/com/demo/example/MyItemRecyclerViewAdapter.java @@ -6,10 +6,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import android.widget.Toast; import kaufland.com.demo.R; import kaufland.com.demo.example.RecylerViewWithRestoreFragment.OnListFragmentInteractionListener; import kaufland.com.demo.example.dummy.DummyContent.DummyItem; +import kaufland.com.swipelibrary.SurfaceView; import kaufland.com.swipelibrary.SwipeLayout; import kaufland.com.swipelibrary.SwipeState; @@ -62,6 +64,13 @@ public void onBounce(SwipeState.DragViewState dragViewState) { } }); + + holder.mSurfaceView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(holder.mSwipeLayout.getContext(), "Clicked SwipeLayout", Toast.LENGTH_LONG).show(); + } + }); } @Override @@ -72,10 +81,12 @@ public int getItemCount() { public class ViewHolder extends RecyclerView.ViewHolder { SwipeLayout mSwipeLayout; + SurfaceView mSurfaceView; public ViewHolder(View view) { super(view); mSwipeLayout = (SwipeLayout) view.findViewById(R.id.swipe_example_2); + mSurfaceView = (SurfaceView) view.findViewById(R.id.surface_view_example2); } } diff --git a/app/src/main/res/layout/match_parent_example.xml b/app/src/main/res/layout/match_parent_example.xml index bd234fa..fa94063 100644 --- a/app/src/main/res/layout/match_parent_example.xml +++ b/app/src/main/res/layout/match_parent_example.xml @@ -38,6 +38,7 @@ android:layout_width="match_parent" android:paddingTop="20dp" android:layout_weight="0.33" + android:id="@+id/surface_view_example2" android:paddingBottom="20dp" android:background="@android:color/holo_red_light" android:layout_height="match_parent"> diff --git a/swipelibrary/src/main/java/kaufland/com/swipelibrary/SwipeLayout.java b/swipelibrary/src/main/java/kaufland/com/swipelibrary/SwipeLayout.java index 81a17bc..9966820 100644 --- a/swipelibrary/src/main/java/kaufland/com/swipelibrary/SwipeLayout.java +++ b/swipelibrary/src/main/java/kaufland/com/swipelibrary/SwipeLayout.java @@ -52,8 +52,6 @@ public class SwipeLayout extends FrameLayout { private SwipeListener mSwipeListener; - private boolean mIsDragging; - private boolean mDragAllowed; private boolean mSwipeEnabled = true; @@ -99,7 +97,7 @@ public boolean onTouchEvent(MotionEvent ev) { mDragHelper.abort(); mSwipeDirectionDetector.onActionDown(ev.getX(), ev.getY(), this); mDragHelper.processTouchEvent(ev); - return true; + break; case MotionEvent.ACTION_MOVE: mSwipeDirectionDetector.onAction(ev.getX(), ev.getY()); @@ -109,11 +107,8 @@ public boolean onTouchEvent(MotionEvent ev) { mDragAllowed = canSwipe; boolean isClick = mDragHelperTouchSlop > Math.abs(mSwipeDirectionDetector.getDifX()); - if (!isClick) { - mIsDragging = true; - } - if (mIsDragging && mDragAllowed) { + if (!isClick && mDragAllowed) { getParent().requestDisallowInterceptTouchEvent(true); mDragHelper.processTouchEvent(ev); } @@ -123,7 +118,6 @@ public boolean onTouchEvent(MotionEvent ev) { case MotionEvent.ACTION_UP: mSwipeDirectionDetector.onActionUp(ev.getX(), ev.getY(), this); - mIsDragging = false; if (ev.getX() < 0 || ev.getY() < 0 || ev.getX() > getMeasuredWidth() || ev.getY() > getMeasuredHeight()) { @@ -131,7 +125,7 @@ public boolean onTouchEvent(MotionEvent ev) { ev.setAction(MotionEvent.ACTION_UP); mDragHelper.processTouchEvent(ev); - return false; + return true; } if (mDragAllowed) { @@ -141,7 +135,6 @@ public boolean onTouchEvent(MotionEvent ev) { break; case MotionEvent.ACTION_CANCEL: - mIsDragging = false; mDragHelper.processTouchEvent(ev); @@ -151,7 +144,7 @@ public boolean onTouchEvent(MotionEvent ev) { mDragHelper.processTouchEvent(ev); } - return mIsDragging; + return true; } @Override @@ -169,11 +162,10 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { mSwipeDirectionDetector.onActionDown(ev.getX(), ev.getY(), this); mDragHelper.abort(); mDragHelper.processTouchEvent(ev); - mIsDragging = false; break; case MotionEvent.ACTION_MOVE: - + mSwipeDirectionDetector.onAction(ev.getX(), ev.getY()); try { mDragHelper.processTouchEvent(ev); } catch (IllegalArgumentException e) { @@ -182,15 +174,13 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { boolean isClick = mDragHelperTouchSlop > Math.abs(mSwipeDirectionDetector.getDifX()); - if (!mIsDragging && isClick) { - return false; - } - if (mIsDragging) { + if (!isClick) { ViewParent parent = getParent(); if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); } + return true; } break; @@ -198,12 +188,11 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: - mIsDragging = false; mDragHelper.processTouchEvent(ev); break; } - return mIsDragging; + return false; } @@ -289,8 +278,9 @@ public void onViewReleased(View releasedChild, final float xvel, float yvel) { } else if (mDraggingProxy.getDragDirection() == SwipeViewLayouter.DragDirection.HORIZONTAL) { SwipeResult swipeResult = new SwipeResult(xBeforeDrag); + boolean isClick = mDragHelperTouchSlop > Math.abs(mSwipeDirectionDetector.getDifX()); - if (!mSwipeDirectionDetector.isHorizontalScrollChangedWhileDragging()) { + if (!mSwipeDirectionDetector.isHorizontalScrollChangedWhileDragging() && !isClick) { swipeResult = mDraggingProxy.determineSwipeHorizontalState(xvel, mSwipeDirectionDetector, mSwipeState, mSwipeListener, releasedChild); }