Убираем скролл в RecyclerView

👁 521

Спойлерок

Привет! Это пишет b00blik уже из будущего. Прошло несколько лет, и потому этот пост может быть слегка неактуален. Зато у меня есть другие рассказы: как я наполучал лещей в поиске иностранного оффера, как нищал русский айтишник в 2022, да даже про пинбол что-то есть. Залетай, расскажу!

RecyclerView — это новый тип View, появившийся в Android L. Вкратце, фича этой вьюшки, в отличие от ListView, в том, что мы используем для отображения только то количество View-шек, которое нам необходимо, и потом переиспользуем при скроллинге, а не забиваем адаптером весь список.

http://developer.android.com/intl/ru/reference/android/support/v7/widget/RecyclerView.html

Бывает такая ситуация, при которой нам нужно отключить скроллинг в RecyclerView, но, в отличие от того же ListView, сделать это труднее.

Самым простым способом будет просто переопределить dispatchTouchEvent и ловить MotionEvent.ACTION_MOVE.

public class NoScrollRecyclerView extends RecyclerView {

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

    public NoScrollRecyclerView(Context context, AttributeSet attrs){
        super(context, attrs);
    }

    public NoScrollRecyclerView(Context context, AttributeSet attrs, int style){
        super(context, attrs, style);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev){

        if(ev.getAction() == MotionEvent.ACTION_MOVE)
            return true;

        return super.dispatchTouchEvent(ev);
    }
}