Я смотрел приложение Twitter на своем телефоне.
Вы можете видеть, что когда пользователь прокручивается вверх, tabLayout на самом деле просто нажимает на нижнюю часть панели инструментов и не перемещается вообще.
Я подумал, что, возможно, они сделали это, просто поместив всю верхнюю часть приложения (изображение профиля, обои профиля велосипеда на траве, текст) в CollapsingToolBarLayout и AppBarLayout, но на самом деле только профиль обои с велосипедом на траве являются частью CollapsingToolBarLayout и AppBarLayout, так как это единственная часть, которая фактически разрушается. Текстовая часть просто прокручивается вверх, а tabLayout просто зажимает вверх под панелью инструментов.
Я читал кредиты в приложении Twitter и, похоже, они использовали SlidingTabLayout для достижения своего эффекта. SlidingTabLayout похож на tabLayout, причем последний поддерживается в библиотеке поддержки.
Он выглядит как довольно распространенный шаблон, который также используется в современных приложениях -
Приложение Google+ использует его в своем профиле в приложении:
Facebook Moments использует его в своем приложении:
Любая идея, как все это удалось сделать?
Я хочу сделать что-то похожее на все эти приложения.
Мои требования:
- У вас есть collapsingToolBarLayout, который сбрасывается при прокрутке вверх
- Возьмите текстовое окно под коллапсом ToolBarLayout, которое будет прокручиваться и "скрываться" под панелью инструментов, когда оно полностью разрушается.
- У вас есть tabLayout под текстовым представлением, которое будет "привязываться" к tabLayout, когда вы прокручиваете текстовое изображение под командой collapsingToolBarLayout.
- Получите recyclerview под tabLayout, чтобы при нажатии на каждую вкладку tabLayout recyclerview будет переключаться между списками "Tweets", "Photos", "Favorites" и т.д.
Я рассмотрел еще два вопроса, которые были опубликованы на SO:
Может ли индикатор выбора вкладки TabLayout быть прикреплен к верхней части экрана во время прокрутки?. Ответ здесь, по-видимому, меняет поведение tabLayout, но я сомневаюсь, что изменение поведения фактически создало бы то, что делает приложение Twitter. Как я уже упоминал, tabLayout, похоже, находится за пределами CollapsingToolBarLayout и AppBarLayout, и поведение должно быть эффективным только в том случае, если оно находится внутри CollapsingToolBarLayout и AppBarLayout.
Как связать TabLaout в верхней части ScrollView?. Этот вопрос задает нечто похожее на то, что я спросил, но не дает достаточно деталей и не имеет ответов.