Android — активировать прокрутку панели приложений на основе recyclerview для каждого просмотра.

У меня есть ViewPager с двумя вкладками, содержащими Recyclerview. Я использую библиотеки поддержки 22.2.0 (AppCompat, Recycler view...). Мой viewpager xml изначально:

<android.support.v4.view.ViewPager
   android:id="@+id/viewPager"
   app:layout_behavior="@string/appbar_scrolling_view_behavior"
   android:layout_width="match_parent"
   android:layout_height="match_parent" />

Я хотел бы активировать/деактивировать прокрутку панели приложений для каждой вкладки/повторного просмотра, а не для всего просмотра страницы, то есть одна вкладка/повторный просмотр будет выполнять прокрутку панели приложений, а другая вкладка/повторный просмотр - нет.

Эта проблема в том, что когда я удаляю

app:layout_behavior="@string/appbar_scrolling_view_behavior"

из viewpager макет layout_behavior по умолчанию применяется к viewpager, который по-прежнему активирует прокрутку панели приложений как на вкладке, так и на recyclerview.

Моя стратегия состоит в том, чтобы отключить прокрутку панели приложений в viewpager, может быть, что-то вроде этого:

   <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            app:layout_behavior="@string/appbar_desactivated_behavior"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

И активируйте его только на моей первой вкладке / recyclerview. Как это :

<android.support.v7.widget.RecyclerView
    ...
    android:id="@+id/playlist1_rv"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
</android.support.v7.widget.RecyclerView>

Но мне нужен класс для "@string/appbar_desactivated_behavior". Он существует? Не так ли, как это написать? Или вы думаете о другой стратегии? Заранее спасибо.


person u2gilles    schedule 12.07.2015    source источник


Ответы (1)


Если вы используете ViewPager, appbar_scrolling_view_behavior необходимо установить на ViewPager для правильного макета.

Все, что вам нужно сделать, это отключить вложенную прокрутку в RecyclerView, которую вы не хотите прокручивать на панели приложений:

        recyclerview.setNestedScrollingEnabled(false);

Обратите внимание, что у вас могут возникнуть проблемы с позиционированием, и вам, возможно, придется поместить поле размером с панель приложения внизу окна recyclerview. И если ваш пользователь прокручивает панель приложения вверх с помощью другого вида recyclerview, а затем переходит к этому виду recyclerview, в нижней части страницы будет пробел.

person kris larson    schedule 14.10.2016