Настройка двойной панели

В Android 12 представлен новый дизайн с двумя панелями : статическое меню L0 слева и панель контента справа. Эта функция представляет множество новых параметров настройки. В этой статье подробно описаны эти функции и объясняется, как вы можете настроить свои собственные параметры.

Вернуться к одной панели

По умолчанию CarSettings теперь отображает представление с двумя панелями, когда окно приложения больше или равно 1400dp в ширину, и представление с одной панелью в противном случае. Чтобы настроить это для конкретного устройства, используйте наложение ресурсов времени выполнения (RRO), чтобы указать необходимые значения конфигурации:

Ценность Описание
config_global_force_single_pane Установите значение true , если все приложение должно работать в конфигурации с одной панелью.
config_homepage_fragment_class Задает начальный фрагмент домашней страницы. В двойной панели это используется для начального фрагмента в панели содержимого. В однопанельном режиме это должен быть фрагмент домашней страницы.

Ключи заголовка

Поскольку различные действия CarSettings могут иметь настраиваемый IA, сопоставление ключа заголовка предоставляется для упрощения настройки. В AndroidManifest.xml каждое действие, поддерживающее двойную панель, имеет TOP_LEVEL_HEADER_KEY , указанный в его метаданных. Это значение указывает на ключ, указанный в res/values/header_keys.xml , который сопоставляется с ключом предпочтения пункта меню верхнего уровня, к которому относится начальный фрагмент. Следовательно, если начальный фрагмент действия изменен или IA перегруппирован таким образом, что конкретный фрагмент подпадает под другое предпочтение верхнего уровня, соответствующие сопоставления в файле header_keys.xml могут быть обновлены, чтобы указать правильное значение. .

Настройка макета активности

Макет для BaseCarSettingsActivity находится в res/layout/car_setting_activity и в этих разделах:

Ценность Описание
top_level_menu Фрагмент меню верхнего уровня показан в конфигурациях с двумя панелями. Ширина этого раздела определяется top_level_menu_width . Базовый макет шасси (с панелью инструментов) окружает этот вид.
top_level_divider Вертикальная линия, разделяющая две панели, ширину которой можно настроить с помощью top_level_divider_width .
fragment_container_wrapper Макет оболочки для панели содержимого (или основной панели в конфигурации с одной панелью). Базовый макет шасси (с панелью инструментов) обернут вокруг этого вида.
settings_focus_parking_view Пользовательская реализация FocusParkingView для удержания поворотного фокуса при необходимости.
fragment_container Контейнер основного контента. Фрагменты содержимого используют его в качестве целевого макета.
restricted_message Представление блокировки с ограничением UX, которое будет отображаться в экземплярах BaseFragment .

Рис. 1. Схема с двумя панелями

Настройки верхнего уровня

Настройки

Предпочтения верхнего уровня — это настраиваемые CarUiPreferences с немного измененным макетом для изменения высоты предпочтения и формы фона. Существует множество различных способов настроить внешний вид этих параметров:

Ценность Описание
res/layout/top_level_preference.xml Наложение всего макета предпочтений.
top_level_preference_min_height Минимальная высота предпочтения верхнего уровня. В зависимости от контента (например, наличие субтитров) предпочтения могут быть выше этого значения.
top_level_preference_corner_radius Радиус скругления угла.
top_level_preference_background Фон настроек верхнего уровня, если они в данный момент не выделены.
top_level_preference_highlight Фон настроек верхнего уровня при выделении.

Иконки

На рис. 2 показано, как значки верхнего уровня теперь состоят из векторного значка внутри цветной фоновой фигуры. Эта форма в настоящее время сконфигурирована для поддержки либо овальной, либо прямоугольной формы. По умолчанию установлена ​​овальная форма.

Чтобы изменить значение по умолчанию, измените значение в config_top_level_icon_shape (где 0 — прямоугольник, а 1 — овал). Значки создаются путем вставки значка переднего плана с помощью top_level_foreground_icon_inset из формы фона. Каждый значок верхнего уровня имеет цвет переднего плана, указанный в файле res/values/colors.xml , и цвет фона, указанный в папке res/color .

Чтобы создать индивидуальный внешний вид, вы можете переопределить все значения цвета.

Рисунок 2. Компоненты предпочтений верхнего уровня

Значки внедренных настроек, которые попадают в категории, указанные в config_top_level_injection_categories , также обрабатываются как значки верхнего уровня. Предоставляемые значки вставляются с тем же значением и имеют ту же форму, что и для всех других значков верхнего уровня (см. выше). Однако фон определяется просмотром следующих атрибутов в следующем порядке:

  1. com.android.settings.bg.argb Метаданные из внедряющего приложения.
  2. com.android.settings.bg.hint Метаданные из внедряющего приложения.
  3. top_level_injected_default_background Указывается в res/values/colors.xml .

Чтобы игнорировать ввод данных приложения и всегда использовать фон по умолчанию, установите для config_top_level_injection_background_always_use_default значение true .