Как сделать так, чтобы несколько разных конфигураций экрана отображались в небольшом наборе макетов без дублирования частей XML-файла моего макета?

Мое приложение отображает пользовательский интерфейс с одной или двумя панелями в зависимости от конфигурации экрана. На экранах меньшего размера оно должно быть однопанельным как в книжной, так и в альбомной ориентации. Для экранов среднего размера (все, что имеет «наименьшую ширину» 600 dp и выше), альбомная ориентация довольно хорошо подходит для макета с двумя панелями, но в портретной ориентации следует использовать макет с одной панелью. используйте макет с двумя панелями в обеих ориентациях. Я также хочу поддерживать квалификаторы стиля 3.2+ (например, sw600dp и sw720dp), а также более старый квалификатор «размер ведра» («xlarge»).

Самый прямой способ Для этого создайте несколько разных XML-файлов макета, по одному для каждой конфигурации:

  • res/layout-sw600dp-land/main.xml
  • res/layout-sw600dp-port/main.xml
  • res/layout- sw720dp-land/main.xml
  • res/layout-sw720dp-port/main.xml
  • res/layout-xlarge-port/main.xml
  • res/layout-xlarge-land/main.xml
  • res/layout-port/main.xml
  • res/layout/main.xml

В результате в этих 8 XML-файлах много дублированного кода, который, по сути, описывает только два разных макета.

Как мне это сделать, не поддерживая все эти повторяющиеся XML-файлы, которые создают головную боль при обслуживании?

6
задан Jeff Axelrod 9 October 2012 в 15:30
поделиться