Я пытался написать код, который позволил бы мне перемещаться назад и вперед между 3 представлениями DialogFragment, которые перекрывают основное действие.
Чтобы быть более точным, каждое представление должно проводиться слева направо.и наоборот во всем пользовательском интерфейсе, во многом так же, как фрагменты в ViewPager (с ограничениями, установленными на границах, как | 1 <-> 2 <-> 3 |).Как и фрагменты в ViewPager, каждый DialogFragment должен останавливаться в естественном положении в центре экрана после прокрутки, и анимация перехода должна быть аналогичной.
В идеале компоновка и функциональность должны быть аналогичны соответствующимзначения по умолчанию для DialogFragment, перекрывающего действие.
Первоначально я попытался сделать это с помощью ViewPager, но столкнулся с проблемой, так как фрагменты не отображались с намеченным макетом.Основная проблема, с которой я столкнулся, заключалась в том, что ViewPager растягивал макет DialogFragment по всему пользовательскому интерфейсу.Кроме того, единственная опция, которую я нашел для изменения размера фрагмента, заключалась в ограничении границ ViewPager, но, конечно, это означало, что переходы происходили в области, меньшей, чем пользовательский интерфейс, а не во всем пользовательском интерфейсе.Майк дал краткое объяснение, почему это происходит в комментариях ниже.
Я также попытался использовать другой подход для создания дочернего DialogFragment в пустых фрагментах ViewPager.Однако, до сих пор я потерпел неудачу, так как функционал ViewPager не работает, пока дочерний DialogFragment видим.
В случае решения «обходного пути» вещи, которые я хочу имитировать из представления DialogFragmentinclude:
- Затененный / затемненный фон за пределами представления DialogFragment.
- Возможность касания за пределами представления DialogFragment, чтобы закрыть представление DialogFragment (и, соответственно, ViewPager) и вернутьсяк основному виду деятельности.