From 6f04b6d519222760b4c60b014191867b21f7d779 Mon Sep 17 00:00:00 2001 From: Chandler Date: Sat, 20 May 2017 16:00:03 +0800 Subject: [PATCH 1/2] Fix focus at 2 index, not show first item. --- .../hellocsl/layoutmanager/gallery/GalleryLayoutManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java b/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java index 1eb80a1..390a540 100644 --- a/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java +++ b/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java @@ -263,7 +263,7 @@ private void fillLeft(RecyclerView.Recycler recycler, int startPosition, int sta int scrapWidth, scrapHeight; Rect scrapRect = new Rect(); int height = getVerticalSpace(); - for (int i = startPosition; i > 0 && startOffset > leftEdge; i--) { + for (int i = startPosition; i >= 0 && startOffset > leftEdge; i--) { scrap = recycler.getViewForPosition(i); addView(scrap, 0); measureChildWithMargins(scrap, 0, 0); @@ -329,7 +329,7 @@ private void fillTop(RecyclerView.Recycler recycler, int startPosition, int star int scrapWidth, scrapHeight; Rect scrapRect = new Rect(); int width = getHorizontalSpace(); - for (int i = startPosition; i > 0 && startOffset > topEdge; i--) { + for (int i = startPosition; i >= 0 && startOffset > topEdge; i--) { scrap = recycler.getViewForPosition(i); addView(scrap, 0); measureChildWithMargins(scrap, 0, 0); From 630d7c849304e6f2931768bb7370d20c03f42aff Mon Sep 17 00:00:00 2001 From: Chandler Date: Fri, 16 Jun 2017 17:34:26 +0800 Subject: [PATCH 2/2] Fix Fling with no onItemSelected callback issue --- .../gallery/GalleryLayoutManager.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java b/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java index 7df23b1..51d2abb 100644 --- a/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java +++ b/library/src/main/java/github/hellocsl/layoutmanager/gallery/GalleryLayoutManager.java @@ -21,6 +21,9 @@ * Created by chensuilun on 2016/11/18. */ public class GalleryLayoutManager extends RecyclerView.LayoutManager implements RecyclerView.SmoothScroller.ScrollVectorProvider { + + private static final boolean DEBUG = false; + private static final String TAG = "GalleryLayoutManager"; final static int LAYOUT_START = -1; @@ -909,6 +912,18 @@ public void attach(RecyclerView recyclerView, int selectedPosition) { recyclerView.setLayoutManager(this); mSnapHelper.attachToRecyclerView(recyclerView); recyclerView.addOnScrollListener(mInnerScrollListener); + + //SnapHelper dft implement an RecyclerView.OnFlingListener, so if there + //is only 3 item, fling from 1 to 0, the onItemSelected callback will not call. + //so we set an OnFlingListener with no process, that is ok. + RecyclerView.OnFlingListener onFlingListener = new RecyclerView.OnFlingListener() { + @Override + public boolean onFling(final int velocityX, final int velocityY) { + Log.e(TAG, "onFling: onTouchEvent 1 mState=" + mState); + return false; + } + }; + recyclerView.setOnFlingListener(onFlingListener); } RecyclerView mRecyclerView;