На картинке ниже вы можете увидеть желаемый макет:
Итак, ViewPager имеет три страницы, левая и правая страницы статически заполнены двумя фрагментами (фрагмент 1 и фрагмент 2), а страница в центре должна иметь макет с панелью инструментов вверху, нижней панелью инструментов снизу и фрагментом в между которыми можно динамически менять.
Насколько я вижу, это можно сделать двумя способами.
Сделайте немного магии с центральной страницей, которая будет иметь обе панели инструментов и будет динамически установлена Fragment0
Каждый фрагмент, который должен перейти на страницу в центре, должен иметь эти панели инструментов и иметь одинаковый способ обработки событий из них, то есть подкласс AbstractCenterFragment
, который содержит все необходимое для реализации этого макета и поведения.
Даже если бы было проще реализовать решение 2, оно мне совсем не нравится по многим причинам. Я не буду обращаться к ним здесь, но если вы настаиваете, я могу предоставить их.
Что касается решения 1, есть ли что-то, что вы можете предложить решить на уровне активности, поскольку активность со всеми ее компонентами (viewmodel и т. Д.) Должна обрабатывать этот макет?
Если я использую FragmentPagerAdapter
для ViewPager
и создаю родительский фрагмент на центральной странице, которая содержит панель инструментов, нижнюю панель инструментов и Fragment0, как это повлияет на производительность?
Есть ли у вас какие-либо другие предположения относительно использования какого-либо другого типа PagerAdapter
, который будет достаточен для обработки поведения данного макета?
Спасибо!
PS Если вы дадите -1 на этот вопрос, пожалуйста, будьте вежливы, чтобы объяснить, почему вы его задали.