【发布时间】:2019-06-01 07:44:55
【问题描述】:
我是 android 新手,因此是 RV,我正在尝试实现第一张和最后一张卡片不居中的布局,而是在它们之后和之前显示更多卡片。也许在这种情况下,我可以看到第二张卡片的 16dp 和倒数第二张卡片的相同内容,这使得第一张和最后一张卡片不居中。 但其余卡片各为 8dp,因此中间卡片显示居中。也许以某种方式将 itemDecoration 用于第二张和倒数第二张卡片。
按照这里的建议,我能够实现显示下一张和上一张卡片的部分内容,但这只会将所有卡片统一居中: How to show part of next/previous card RecyclerView
我尝试覆盖 getItemOffsets 但每次我滚动到第一张或最后一张卡片并错误地将第二张和第二张卡片移动到最后一张卡片时都会触发它 当我滚动到它们时,它们也没有正确居中。
public static class MyItemDecoration extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
final int itemPosition = parent.getChildAdapterPosition(view);
if (itemPosition == RecyclerView.NO_POSITION) {
return;
}
final int itemCount = state.getItemCount();
if (itemCount > 0 && itemPosition == 1) {
outRect.left -= 16;
outRect.right -= 16;
}
else if (itemCount > 0 && itemPosition == itemCount - 1) {
outRect.left += 16;
outRect.right += 16;
}
}
}
房车设置
SnapHelper snapHelper = new PagerSnapHelper();
RecyclerView rv = getBinding().rv;
rv.setOnFlingListener(null);
snapHelper.attachToRecyclerView(rv);
【问题讨论】:
标签: android android-layout android-recyclerview recyclerview-layout