2013-05-20 3 views
2

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

Как название, я знаю, что после макет (ы), чтобы соответствовать другой экран:

res/layout/main_activity.xml For handsets (smaller than 600dp available width) 
res/layout-sw600dp/main_activity.xml For 7” tablets (600dp wide and bigger) 
res/layout-sw720dp/main_activity.xml For 10” tablets (720dp wide and bigger) 

В моем APP я использую ViewPagerAdapter для управления моим содержимым.

Я получил 3 Страница потока для телефона устройства:

enter image description here

И, конечно же, пользователь может видеть только 1 страницу одновременно.

Теперь я хотел бы задать несколько иную схему для 7" таблетка:

enter image description here

Я хотел бы поставить WebView слева от макета, и сделать его изоляции от ViewPagerAdapter, так, что она будет видна в течение всего времени.

и 2 другие страницы будут помещены справа от макета, и сделать его действовать как ViewPager (может быть слайд влево/вправо).

Оба версии макета Wi Я использую тот же код для управления, но, как вы видите, поток страниц немного отличается. Поэтому я должен сделать несколько изменений, чтобы архивировать мою цель.

Возможно ли это?

+0

http://developer.android.com/guide/practices/tablets-and-handsets.html см это –

ответ

0

Чтобы реализовать макет с минимальными усилиями, вы, вероятно, захотите использовать вложенные фрагменты: независимо от используемого устройства, каждая панель ViewPager будет обрабатываться «умным» контейнером Fragment.

Nested fragments description on "Android developers"

Контейнер Фрагмент обрабатывает логику из которых должны быть загружены фрагменты, когда представление создается, путем проверки идентификатора из фрагментов/Показов присутствуют в загруженной компоновке и создания/присоединении фрагментов по мере необходимости ,

Например, на Android-телефоне макет для первой панели, вероятно, будет содержать только файл R.id.title, а не идентификатор R.id.list: фрагмент контейнера может обнаружить это, установив, что findViewById (R. id.list) имеет значение null и создает только фрагмент заголовка (где на планшете результат не будет равен нулю).

Как вы можете видеть, так как загружен правильный файл макета автоматически Android, вам не нужно реализовать много логики :)

Единственная задача, которая остается меняется количество страниц, проявленную ViewPager в зависимости от геометрии вашего экрана (телефона/планшета), который вы можете использовать в методе onCreate.

Имейте ввиду, что этот последний шаг может оказаться сложным, если ориентация вашего приложения изменится из-за поворота устройства.

Надеется, что это помогает

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