Подтвердить что ты не робот

Вкладки вкладки в Android 4 с поддержкой библиотеки (ActionBarSherlock)

У меня возникают серьезные проблемы с получением трех слоев вложенных вкладок для работы в приложении, которое работает с Android 2.1 и выглядит как Android 4 (использует фрагменты библиотеки поддержки).

Цель

  • Приложение должно иметь ActionBar (работает, в то же время использует ActionBarSherlock)
  • 3 фиксированных вкладки на главном экране, которые не перемещаются в ActionBar, даже если экран достаточно большой. Вторая из этих вкладок содержит...
  • Около 4 вкладок, загруженных с сервера при первом входе в систему. Каждый из них содержит
  • Около 10 вкладок (например, в Play Маркете), которые были загружены с сервера, когда пользователь зарегистрировался в первый раз. Моя идея здесь заключается в использовании ViewPagerIndicator, поскольку эта библиотека написана тем же парнем, который ActionBarSherlock должен свести проблемы до минимума. Но я открыт для идей здесь). Каждая из этих swipable вкладок содержит что-то, что в настоящее время является фрагментом, но может быть изменено.

Проблема

Когда это было приложение Android 2, оно просто использовало вложенные TabActivities, но они не работают со всеми продуктами Android 4. Я не понимаю, как это сделать, возможно, что ограничение "вы не можете гнездовать фрагменты" вызывает у меня головные боли. Кроме того, кажется, что вы можете использовать только один FragmentManager для каждого действия, поэтому моя идея иметь его на каждой вкладке второй строки не работала (все, кроме первой вкладки, оставались пустыми). Как это сделать правильно?

(Пожалуйста, поймите, что "Использовать другой графический интерфейс" не является вариантом, так как это то, о чем попросил клиент, и он не будет пересматривать)

4b9b3361

Ответ 1

PagerAdapter не требует Fragments как детей. Вы можете раздувать/управлять своими собственными представлениями. Таким образом, вы можете продолжать использовать вложенный TabActivities. Или, вы могли бы поставить Fragments на верхнем уровне и управлять своим Views на нижнем уровне ViewPager.

Можно также теоретически использовать ViewFlipper, если вы хотите сохранить фрагменты в ViewPager. Вам нужно будет написать свой собственный LinearLayout с помощью Buttons в качестве вкладок, но это легко. Если вы ищете взгляд на Holo, просто установите стиль в те, что найдены в ABS.

Другой вариант - использовать TabHost без использования TabActivity. Вы даже можете использовать его с фрагментами. См. Пример здесь.

Также обратите внимание: если вы ищете стиль Google Play для ViewPagerIndicator, который теперь включен в пакет поддержки: PagerTitleStrip.

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

Тем не менее,

Я должен сказать, что это звучит как страшный шаблон пользовательского интерфейса. Хуже того, мы говорим о много завышенных просмотров в одном Activity. Здесь вы можете столкнуться с проблемами памяти, в зависимости от того, что отображается. Я рекомендую использовать ViewStubs и утилизировать, если вы держите ViewPager внизу.

Продолжайте пытаться подтолкнуть клиента к использованию шаблона Spinner ActionBar для верхних уровней (основные 3 вкладки) или даже рассмотреть причудливый скользящий шаблон ящика. Возможно, этой гладкой анимации может быть достаточно, чтобы поколебать свое мнение.

Обратитесь к официальному веб-сайту дизайна и покажите примеры популярных шаблонов навигации, подобных тем, которые были найдены в Gmail, YouTube, Google+, Evernote и т.д. Недавно я обратился к клиенту с запросом того же шаблона, который вы описали, и после недели отталкивания смогли убедить их в том, что более чем 2 слоя вкладок неприемлемы.

Вы также можете показать им свою страницу "Стена скрыть +", подчеркнув плохие шаблоны дизайна, используемые в популярных приложениях для Android: Android UI Anti-Patterns.: -)