0

У меня есть дизайн TabLayout или TabHost, который вы хотите рассмотреть. Предположим, что это вкладки -Оверлей фрагмента поверх существующего фрагмента

Tab1 | Tab2 | Tab3 | Tab4 | Tab5

В следующем действии будет иметь место -

  1. Tab1 - открывает Fragment1
  2. Таб2 - открывает FRAGMENT2
  3. TAB3 - открывает наложение поверх существующего фрагмента с полупрозрачным черным видом
  4. Tab4 - открывает Фрагмент3
  5. Tab5 - открывает Фрагмент4

Любая идея о том, как это решить? Спасибо заранее!

UPDATE: Решение я использовал

Я попытался это, но должен был сделать много настроек. Поэтому я остановился посередине, так как это была большая работа. Итак, еще один способ, который я сделал, - это поставить еще один вид на TabLayout в том же положении, что и на Tab3, и по щелчку этого View Я сделал вид сверху.

+0

Вы используете 'ViewPager'? –

+0

ya в настоящее время использует 'ViewPager' –

+0

как это должно работать, когда пользователь прокручивает страницы с помощью салфетки? должен ли наложение прокручиваться со стороны сверху текущей страницы?или вкладка 3 игнорируется во время салфетки –

ответ

0

ViewPager не предназначен для этого случая использования. Вкладки автоматически сопоставляются с соответствующим элементом в ViewPager. Но вот как я мог видеть, что это работает.

  1. Иметь TranslucentOverlayView, который имеет Visibility.GONE, который перекрывает всю вашу ViewPager.
  2. Имейте tab3, чтобы открыть дублирующий клон fragment2, и когда выбрано tab3, сделайте вид TranslucentOverlayView. Это означает, что вы будете иметь два отдельных экземпляра fragment2 бок о бок.
+0

хорошее предложение попробует это ... !! спасибо :) проголосует один раз, когда я его реализую –

+0

проверьте вопрос. Я обновил его с ответом. Спасибо за предложение. Это наверняка сработало бы, если бы у меня было время его реализовать :) –

0

Как @ZakTaccardi сказал, ViewPager не предназначен для этого.

Однако, я бы постарался создать FragmentPagerAdapter с 5 страницами. Я имею в виду, что getCount() должен возвращать 5. Если текущий индекс равен 2, вы должны вернуть экземпляр, который в настоящее время находится на экране. Это означает, что ваш адаптер должен знать, что такое текущая страница. Вы можете использовать ViewPager s onPageChangeListener, чтобы адаптер знал, что такое текущая страница. Чтобы получить экземпляр, используйте FragmentManager. Не храните ссылку на фрагмент в адаптере, потому что это приведет к утечке памяти. Это позволяет предотвратить дублированные фрагменты, когда вы выберите закладку 3.

Чтобы отобразить накладку, реализовать View на верхней части ViewPager и отобразить его в onPageSelected() обратного вызова из ViewPager когда позиция 2. Скрыть это когда позиция не 2.

+0

проверить вопрос. Я обновил его с ответом. Спасибо за предложение. Это, безусловно, сработало бы, если бы у меня было время его реализовать :) –

+0

Вы должны опубликовать его как ответ, а не как обновление своего вопроса. Тогда вы сможете принять его, и этот вопрос будет считаться «ответом». На данный момент он все еще открыт. Спасибо. –

Смежные вопросы