首页 > 解决方案 > 将 RecyclerView 项目更改为高于所有其他项目

问题描述

我有包含图像作为项目的水平 recyclerView。如何检测 RecycleView 项目何时位于屏幕中央并强调它是这样的:

例子 :

例子

标签: androidandroid-recyclerview

解决方案


您可以将轮播逻辑与 RecyclerView 组合和 SnapHelper 兼容性类一起使用,如下所示:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fadingEdge="horizontal"
    android:overScrollMode="never"
    android:requiresFadingEdge="horizontal" />

然后将您的 recyclerView 附加到 SnapHelper 类:

LinearSnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);

并为当前选择的居中项提供逻辑:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        if (newState == RecyclerView.SCROLL_STATE_IDLE) {
            float pos = (float) recyclerView.computeHorizontalScrollOffset() / (float) itemHeight;
            int itemPos = (int) Math.floor(pos);
        }
        super.onScrollStateChanged(recyclerView, newState);
    }
});

推荐阅读