2015-02-07 3 views
0

Я хотел бы сделать Android-приложение, которое имеет следующую основную схему:прокруткой Фрагменты в деятельности (без ViewPager)

App

Деятельность должна занимать несколько фрагментов (которые все имеют разные макеты), к фрагментам можно получить прокрутку влево или вправо (в области с черным краем на изображении) или нажатием предыдущей/следующей кнопки.

Макет фрагментов содержит поля ввода, которые должны быть подтверждены при нажатии на следующую кнопку или выполняется прокрутка вправо. Если поле ввода пуст, следующий фрагмент не должен отображаться.

Я попытался сделать это с помощью viewpager, это работает только с некоторыми обходными решениями, которые не очень хороши, поэтому я пытаюсь найти другой подход.

Итак, мой вопрос: что было бы лучшим способом реализовать описанную выше функциональность без использования viewpager? Может быть, вы хотите прослушивать жест на фрагментах и ​​вручную их разыгрывать?

Справка была бы принята с благодарностью!

+0

Что случилось с ViewPager? – Blackbelt

+0

вы можете использовать прослушиватель жестов и заменить фрагмент в соответствии с вашими потребностями. –

+0

@Blackbelt Оказывается, валидация очень сложная. – deimos1988

ответ

1

Наличие пользовательского интерфейса в стиле мастера с кнопками в порядке, и для этого есть как минимум одна библиотека. Я вообще не согласен с вашим подходом в отношении событий салфетки.

Оказывается, что проверка очень сложно

Я не знаю, что вы имеете в виду под этим.

IMHO, самое простое решение - использовать ViewPager, где вы не добавляете страницу «Далее» до тех пор, пока не будут выполнены критерии проверки, и вы удалите страницу «Далее», если критерии проверки не будут выполнены (например, пользователь очищает поле). Для этого вам понадобится пользовательский PagerAdapter, или, возможно, my ArrayPagerAdapter, поскольку добавление/удаление страниц из адаптеров запаса не так хорошо работает (хотя они могут быть в порядке только для одного конца ...).

Но, опять же, я чувствую, что ваш UX не очень хороший. Предположим, у вас есть четыре полных возможных страницы в мастере, здесь называемые A, B, C и D. Пользователь начинает с A, заполняет ваше поле, переходит в B, заполняет ваше поле, переходит на C, заполняет ваше поле , продвигается к D, возвращается к B и очищает поле B (или иным образом делает его недействительным). Согласно вашему потоку, пользователь не может снова перейти на C до тех пор, пока поле B не будет заполнено. И с точки зрения продвижения через кнопку «Далее», если это отключить до тех пор, пока форма формы B не станет вполне разумной, и пользователи могут хорошо видеть это поведение раньше (например, мастера настольных ОС). Но пользователь не обязательно понимает, что кнопка «Далее» и «салфетки» логически совпадают, так как пользователи привыкли к тому, что хотят, когда поймут, что они могут пронести туда. Следовательно, если бы я делал это, я бы пошел с прямым интерфейсом мастера, не пропустив события.

0

ViewPager загружает как минимум два фрагмента, тот, который вы просматриваете, и следующий/предыдущий. Таким образом, вы никогда не сможете делать то, что вы готовы сделать плавно, используя ViewPager.

Вместо этого вы можете использовать предыдущие и следующие кнопки для отсоединения текущего фрагмента и присоединения нового после проверки ваших входов. И если вы хотите, чтобы он выглядел как ViewPager, вы можете добавить анимацию слайдов к текущему фрагменту и новому.

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