RecyclerView LinearLayoutManager - Как заблокировать прокрутку в определенной позиции? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть список элементов, который отображается в RecyclerView с LinearLayoutManager. Теперь я хотел бы программно «заморозить» прокрутку в определенной позиции, чтобы пользователь больше не мог прокручивать вручную.

Я могу прокрутить до определенной позиции, используя linearLayoutManager.scrollToPosition(position);

РЕДАКТИРОВАТЬ: должно замерзнуть внизу, чтобы пользователь не мог прокрутить вниз. прокрутка вверх - это нормально, но прокрутка вниз должна быть ограничена.

Как я могу отключить прокрутку или, по крайней мере, чтобы пользователь не мог прокрутить дальше, чем заданная позиция?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 12 ноября 2018

Я не пытался заставить его работать.Но вот мое предложение:


1.Вы должны переопределить ваш LinearLayoutManager:

 linearLayoutManager = new LinearLayoutManager(context) {
   @Override
   public boolean canScrollVertically() {
     return isScrollable(); // your custom method
   }
 };


2.прослушайте событие прокрутки, чтобы определить событие прокрутки вверх / вниз:

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    if (dy > 0) {
        // Scrolling up
    } else {
        // Scrolling down
    }
}

@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);

    if (newState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
        // Do something
    } else if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
        // Do something
    } else {
        // Do something
    }
}

});


3.Использование linearLayoutManager.findFirstVisibleItemPosition() для проверки, является ли это пороговое положение, и прокрутите вниз в isScrollable(), чтобы включить / отключить прокрутку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...