📜  recyclerview 移除滚动效果 (1)

📅  最后修改于: 2023-12-03 15:19:47.126000             🧑  作者: Mango

RecyclerView 移除滚动效果

在 Android 开发中,RecyclerView 是非常常用的控件之一,它可以实现高度定制化的列表、网格等布局,而且支持动态添加、删除、更新等操作。

然而,有时我们需要实现一个静态的列表,即列表不需要滚动。这时,我们就需要移除 RecyclerView 的滚动效果。以下是实现方法:

方法一:设置固定高度

RecyclerView 默认是有滚动效果的,要关闭滚动,最简单的方法就是设置 RecyclerView 的固定高度。通过设置 LayoutParams 的方式,可以实现固定高度:

RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 800));

setHasFixedSize(true) 是固定控件大小的意思,不设置可能会导致 RecyclerView 的布局出现问题。 以上代码实现了一个高度为 800dp 的静态列表。

方法二:关闭滚动

第二种方法是从 RecyclerView 的本质去修改。可以继承自 RecyclerView 并覆盖 onTouchEvent 函数来实现。具体代码如下:

public class NonScrollRecyclerView extends RecyclerView {

    public NonScrollRecyclerView(Context context) {
        super(context);
    }

    public NonScrollRecyclerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public NonScrollRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return false;
      }
}

以上代码实现了一个不可滚动的 RecyclerView。通过覆盖 onTouchEvent 函数并返回 false,我们可以禁用掉 RecyclerView 的滚动效果。然后在布局文件中使用 NonScrollRecyclerView,就可以实现一个静态的列表了。

以上是两种方法实现 RecyclerView 移除滚动效果的方法,可以根据自己的需求选择合适的方法。