public RecyclerViewLayoutManagerAssert canNotScrollVertically() { isNotNull(); assertThat(actual.canScrollVertically()) // .overridingErrorMessage("Expected to not be able to scroll horizontally but can.") // .isFalse(); return this; }
public RecyclerViewLayoutManagerAssert canScrollVertically() { isNotNull(); assertThat(actual.canScrollVertically()) // .overridingErrorMessage("Expected to be able to scroll vertically but can not.") // .isTrue(); return this; }
@Nullable @Override public int[] calculateDistanceToFinalSnap( @NonNull LayoutManager layoutManager, @NonNull View targetView) { int[] out = new int[2]; if (layoutManager.canScrollHorizontally()) { out[0] = distanceToStart(layoutManager, targetView, getHorizontalHelper(layoutManager)); } else { out[0] = 0; } if (layoutManager.canScrollVertically()) { out[1] = distanceToStart(layoutManager, targetView, getVerticalHelper(layoutManager)); } else { out[1] = 0; } return out; }
@Override public int[] calculateDistanceToFinalSnap(@NonNull RecyclerView.LayoutManager layoutManager, @NonNull View targetView) { int[] out = new int[2]; if (layoutManager.canScrollHorizontally()) { out[0] = distanceToStart(targetView, getHorizontalHelper(layoutManager)); } else { out[0] = 0; } if (layoutManager.canScrollVertically()) { out[1] = distanceToStart(targetView, getVerticalHelper(layoutManager)); } else { out[1] = 0; } return out; }
private int adjustDyForDown(int dy) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final View firstChild = layoutManager.getChildAt(0); final int position = layoutManager.getPosition(firstChild); if (position == 0) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) firstChild.getLayoutParams(); final int maxDy = -(layoutManager.getDecoratedTop(firstChild) - params.topMargin) + layoutManager.getPaddingTop(); if (dy > maxDy) { return maxDy; } } return dy; }
@Override public int[] calculateDistanceToFinalSnap(@NonNull RecyclerView.LayoutManager layoutManager, @NonNull View targetView) { int[] out = new int[2]; if (layoutManager.canScrollHorizontally()) { out[0] = distanceToStart(targetView, getHorizontalHelper(layoutManager)); } else { out[0] = 0; } if (layoutManager.canScrollVertically()) { out[1] = distanceToStart(targetView, getVerticalHelper(layoutManager)); } else { out[1] = 0; } return out; }
@Override public int[] calculateDistanceToFinalSnap(@NonNull RecyclerView.LayoutManager layoutManager, @NonNull View targetView) { int[] out = new int[2]; if (layoutManager.canScrollHorizontally()) { out[0] = distanceToStart(targetView, getHorizontalHelper(layoutManager)); } else { out[0] = 0; } if (layoutManager.canScrollVertically()) { out[1] = distanceToStart(targetView, getVerticalHelper(layoutManager)); } else { out[1] = 0; } return out; }
@Override public int calculateDyToMakeVisible(View view, int snapPreference) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final int adapterPosition = getPosition(view); final int topOffset = getPositionSectionHeaderHeight(adapterPosition); final int top = layoutManager.getDecoratedTop(view); final int bottom = layoutManager.getDecoratedBottom(view); final int start = layoutManager.getPaddingTop() + topOffset; final int end = layoutManager.getHeight() - layoutManager.getPaddingBottom(); return calculateDtToFit(top, bottom, start, end, snapPreference); } };
@Nullable @Override public int[] calculateDistanceToFinalSnap(RecyclerView.LayoutManager layoutManager, View targetView) { int[] out = new int[2]; if (layoutManager.canScrollHorizontally()) { out[0] = distanceToStart(targetView, getHorizontalHelper(layoutManager)); } else { out[0] = 0; } if (layoutManager.canScrollVertically()) { out[1] = distanceToStart(targetView, getVerticalHelper(layoutManager)); } else { out[1] = 0; } return out; }
public void smoothScrollToView(View v) { int distance = 0; if (getLayoutManager() instanceof LinearLayoutManager) { if (getLayoutManager().canScrollVertically()) { final float y = v.getY() + v.getHeight() * 0.5f; final float halfHeight = getHeight() * 0.5f; distance = (int) (y - halfHeight); } else if (getLayoutManager().canScrollHorizontally()) { final float x = v.getX() + v.getWidth() * 0.5f; final float halfWidth = getWidth() * 0.5f; distance = (int) (x - halfWidth); } } else throw new IllegalArgumentException("CircleRecyclerView just support T extend LinearLayoutManager!"); smoothScrollBy(distance,distance); }
@Override public int calculateDyToMakeVisible(View view, int snapPreference) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final int adapterPosition = getPosition(view); final int topOffset = getPositionSectionHeaderHeight(adapterPosition); final int top = layoutManager.getDecoratedTop(view); final int bottom = layoutManager.getDecoratedBottom(view); final int start = layoutManager.getPaddingTop() + topOffset; final int end = layoutManager.getHeight() - layoutManager.getPaddingBottom(); return calculateDtToFit(top, bottom, start, end, snapPreference); } };
@Override public int calculateDyToMakeVisible(View view, int snapPreference) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) view.getLayoutParams(); final int top = view.getTop() - params.topMargin; final int bottom = view.getBottom() + params.bottomMargin; final int start = layoutManager.getPaddingTop(); final int end = layoutManager.getHeight() - layoutManager.getPaddingBottom(); return calculateDtToFit(top, bottom, start, end, snapPreference); } @Override
@Override public void onBindViewHolder(VH holder, int position) { mAdapter.onBindViewHolder(holder, position); View itemView = holder.itemView; ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams() == null ? new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) : itemView.getLayoutParams(); if (mCleverRecyclerView.getLayoutManager().canScrollHorizontally()) { layoutParams.width = (mCleverRecyclerView.getWidth() - mCleverRecyclerView.getPaddingLeft() - mCleverRecyclerView.getPaddingRight()) / mVisibleChildCount; } if (mCleverRecyclerView.getLayoutManager().canScrollVertically()) { layoutParams.width = (mCleverRecyclerView.getWidth() - mCleverRecyclerView.getPaddingLeft() - mCleverRecyclerView.getPaddingRight()); layoutParams.height = (mCleverRecyclerView.getHeight() - mCleverRecyclerView.getPaddingTop() - mCleverRecyclerView.getPaddingBottom()) / mVisibleChildCount; } itemView.setLayoutParams(layoutParams); }
public RecyclerViewLayoutManagerAssert canScrollVertically() { isNotNull(); assertThat(actual.canScrollVertically()) // .overridingErrorMessage("Expected to be able to scroll vertically but can not.") // .isTrue(); return this; }
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); boolean isLast = isLastRow(parent, view); if (isLast && mLastDividerSize <= 0) { return; } if (parent.getLayoutManager().canScrollHorizontally()) { outRect.right = getDividerSize(parent, isLast); } else if (parent.getLayoutManager().canScrollVertically()) { outRect.bottom = getDividerSize(parent, isLast); } }
@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); if (mDivider == null) { return; } if (parent.getLayoutManager().canScrollHorizontally()) { drawHorizontal(c, parent); } else if (parent.getLayoutManager().canScrollVertically()) { drawVertical(c, parent); } }
public RecyclerViewLayoutManagerAssert canNotScrollVertically() { isNotNull(); assertThat(actual.canScrollVertically()) // .overridingErrorMessage("Expected to not be able to scroll horizontally but can.") // .isFalse(); return this; }
@Nullable @Override public View findSnapView(RecyclerView.LayoutManager layoutManager) { if (layoutManager.canScrollVertically()) { return findCenterView(layoutManager, getVerticalHelper(layoutManager)); } else if (layoutManager.canScrollHorizontally()) { return findCenterView(layoutManager, getHorizontalHelper(layoutManager)); } return null; }
public View findViewAtCenter() { if (getLayoutManager().canScrollVertically()) { return findViewAt(0, getHeight() / 2); }else if (getLayoutManager().canScrollHorizontally()) { return findViewAt(getWidth() / 2, 0); } return null; }
@Nullable @Override public View findSnapView(LayoutManager layoutManager) { if (layoutManager.canScrollVertically()) { return findViewClosestToStart(layoutManager, getVerticalHelper(layoutManager)); } else if (layoutManager.canScrollHorizontally()) { return findViewClosestToStart(layoutManager, getHorizontalHelper(layoutManager)); } return null; }