#android #android-viewpager #material-design #android-tablayout #android-viewpager2
Вопрос:
У меня есть TabLayout
компонент компоновки материала, связанный с a ViewPager2
. Количество элементов(вкладок) достаточно велико, чтобы превышать размер экрана.
Я установил
app:tabMode="scrollable"
но есть эффект, от которого я хочу избавиться. Если я проведу ViewPager2
пальцем по экрану нормально, TabLayout
он обновится и перейдет на соответствующую вкладку.
Кроме того, если я нажму вкладку, которая находится на краю экрана, то TabLayout
произойдет автоматическая прокрутка (автофокусировка) и на эту вкладку.
Я хочу отключить это событие автопрокрутки (автофокусировки). Я хочу, чтобы моя таблица прокручивалась только в том случае, если пользователь проводит по ней пальцем. Я не хочу, чтобы он автоматически развертывался, когда:
- Пользователи проводят пальцем по
ViewPager2
- Пользователь нажимает на вкладку
В обоих этих случаях я просто хочу, чтобы представление вкладки обновлялось, но не выполнялось автоматически.
Я пытался:
app:tabMode="fixed"
но так как у меня много вкладок, это не будет работать должным образом. Например, если я вручную прокручу свою TabLayout
страницу до конца, а тем временем сохраню ViewPager2
ее на 2-й странице, а затем проведу пальцем по 3-й странице, это приведет TabLayout
к сбросу фокуса в исходное состояние вместо того, чтобы просто оставаться на последней вкладке, где она была.
Это моя простая конфигурация:
TabLayoutMediator(
tabLayout,
viewPager
) { tab, position ->
// Setup tab view
}.attach()
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
// Update view of selected tab
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
// Update view of unselected tab
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
Есть ли какой-либо способ добиться этого эффекта с помощью TabLayout
или я должен использовать другой компонент?
Комментарии:
1. Создайте пользовательский
TabLayout
, более простой и удобный для управления. Создайте горизонтальноеList
/Scrollview
, сдвиньте наViewPager
основе выбранного значения.