Фон
Предположим, что у меня есть эти элементы в активности:
- панель действий (фактически панель инструментов)
- вкладки (с помощью TabLayout)
- ViewPager с фрагментами.
- каждый фрагмент имеет ListView/RecyclerView.
Я хочу иметь такое же поведение, как и во многих приложениях, что при прокрутке панель действий будет скрываться или отображаться.
Прекрасным примером этого является то, как работает прокрутка Play Маркета.
Что-то вроде этого (но с ListView в фрагментах, конечно):
Проблема
Я нашел библиотеку Android-ObservableScrollView, которая показывает, как это сделать для многих типов прокрутки, но он не обрабатывает случай использования нового TabLayout (плюс его проблемы), как показано на более новых образцах, например cheesesquare.
В новом API-интерфейсе библиотеки дизайна (показанном на примере "cheesesquare" ) он более автоматический, поэтому вам не нужно создавать так много шаблонов для обработки прокрутки и что с ним делать.
Что-то вроде этого:
<android.support.v4.widget.DrawerLayout
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout>
<android.support.v7.widget.Toolbar
app:layout_scrollFlags="scroll|enterAlways"/>
<android.support.design.widget.TabLayout/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton/>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView/>
</android.support.v4.widget.DrawerLayout>
Эта hirerchy promises, что snackbars будет ниже FAB, и что панель действий будет автоматически анимирована (показана/скрыта) на основе внутреннего RecyclerView фрагментов.
Thing, кажется, что работает только с RecyclerView, а не с ListView.
Так как они довольно сложны, будет очень сложно преобразовать их в RecyclverViews.
Вопрос
Что нужно сделать, чтобы этот механизм работал и для ListViews?
Есть ли способ сделать это? Если да, то как?
EDIT: похоже, Google не поддерживает это поведение для ListView, но только для RecyclerView и NestedScrollView (написано о здесь).
Итак, я попытался использовать библиотеку Android-ObservableScrollView, но в ней много проблемы с прокруткой, включая проблемы с отправкой.
Теперь я решил дать Android-ParallaxHeaderViewPager. Может ли кто-нибудь рассказать мне, как заставить его работать в текущем сценарии? Возможно ли это?
EDIT: я решил конвертировать в RecyclerView в конце концов. Тем не менее, все образцы, которые я пробовал, показывают проблему: при остановке для прокрутки панель действий (и, возможно, даже FAB) может оставаться усеченной, в отличие от магазина воспроизведения, где она будет анимирована или скрыта/показана.
EDIT: Кажется, мне нужно использовать setExpanded при наличии IDLE для onScrollStateChanged. вопрос в том, как решить, когда развернуть и когда рухнуть.