Фон
Предположим, у меня есть эти элементы в действии:
- панель действий (на самом деле панель инструментов)
- вкладки (используя TabLayout )
- ViewPager с фрагментами.
- каждый фрагмент имеет ListVIew/RecyclerView.
Я хочу иметь такое же поведение, как и во многих приложениях, чтобы при прокрутке панель действий скрывалась или отображалась.
Прекрасным примером является то, как работает прокрутка Play Store.
Что-то вроде этого (но с 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>
Эта иерархия обещает, что закусочные будут ниже FAB, и что панель действий будет автоматически анимирована (показана/скрыта) на основе внутреннего RecyclerView фрагментов.
Дело в том, что это работает только с RecyclerView, а не с ListView.
Поскольку они довольно сложные, их будет очень сложно преобразовать в RecyclverViews.
Вопрос
Что нужно сделать, чтобы описанный выше механизм работал и для ListView?
Есть ли способ сделать это? Если да, то как?
РЕДАКТИРОВАТЬ: к сожалению, похоже, что Google не будет поддерживать такое поведение для ListView, а только для RecyclerView и NestedScrollView (написано о здесь).
Поэтому я попытался использовать библиотеку "Android-ObservableScrollView". , но у него много проблем с прокруткой, в том числе с прокруткой.
Теперь я решил предоставить Android-ParallaxHeaderViewPager . Может ли кто-нибудь сказать мне, как заставить его работать в текущем сценарии? Это вообще возможно?
РЕДАКТИРОВАТЬ: я все-таки решил перейти на RecyclerView. Тем не менее, все образцы, которые я пробовал, показывают проблему: при остановке прокрутки панель действий (и, возможно, даже FAB) может оставаться усеченной, в отличие от магазина игр, где она будет анимирована либо скрыта, либо показана.
РЕДАКТИРОВАТЬ: кажется, мне нужно использовать setExpanded при наличии IDLE для onScrollStateChanged . вопрос в том, как решить, когда расширяться, а когда сворачиваться.