Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Выкройки и компоненты
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
В Android 8.0 меню настроек получает несколько компонентов и виджетов, которые охватывают общие применения. Производителям устройств и разработчикам рекомендуется использовать общие компоненты при расширении приложения настроек, чтобы новые пользовательские интерфейсы оставались согласованными с существующим пользовательским интерфейсом настроек.
Вот краткий обзор улучшений:
- Изменение поведения разделителя в библиотеке поддержки Preference framework. Разделитель теперь рисуется между категориями.
- Изменение темы ActionBar. ActionBar теперь использует светлую цветовую тему с акцентным цветным текстом.
- Новый макет предпочтений. Место для иконок остается даже если у предпочтения нет иконки.
Новые виджеты:
- Виджет заголовка для сведений о приложении. Отображает значок приложения, метку приложения и другую информацию.
- Кнопка «Развернуть» на некоторых страницах. Страница может быть свернута и скрывать менее важные элементы, пока пользователь не нажмет кнопку «Развернуть».
- Пользовательский интерфейс выбора приложений по умолчанию:
- Пользовательский интерфейс для выбора браузера по умолчанию, приложения для телефона по умолчанию и т. д.
- Раньше это был диалог, а теперь это полноэкранный пользовательский интерфейс на основе переключателей.
- Предпочтение в стиле "MasterSwitch". Это предпочтение с двумя целями щелчка. Левая цель ведет к подмножеству фрагмента или намерения. Правая цель — это переключатель, управляющий включением/выключением для всей страницы.
Примеры и источник
- Поведение делителя
- Все страницы в Настройках изменены для использования нового поведения разделителя.
- Поведение разделителя определяется как ThemeOverlay в:
packages/apps/Settings/res/values/styles_preference.xml
- Изменение темы ActionBar
- Все страницы в Настройках изменены для использования новой темы ActionBar.
- Тема определяется в Theme.DeviceDefault.Settings
- Новый макет предпочтений
- На многих страницах настроек теперь используется новый макет предпочтений.
- Код можно найти здесь:
packages/apps/Settings/res/values/styles_preference.xml
- Виджет заголовка приложения
- На большинстве страниц с информацией о приложениях в настройках уже реализован новый заголовок приложения.
- Примеры и код можно найти по адресу:
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- Кнопка «Развернуть»
- Выбор приложения по умолчанию
- Код базового класса можно найти здесь:
packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
- Существует несколько подклассов DefaultAppPickerFragment, каждый из которых реализует средство выбора для различных целей.
- Предпочтение стилю MasterSwitch
- Код находится по адресу:
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- Пример использования — первичный коммутатор Wi-Fi. Пример можно найти здесь:
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
Выполнение
Производители устройств могут начать использовать все новые компоненты из коробки. Если OEM-производители решат внедрить новый стиль предпочтения "MasterSwitch" или средство выбора приложений по умолчанию, им следует следовать примерам в этом документе и справочным файлам (Javadoc), написанным с каждым компонентом, для получения более подробной информации.
Настройте меню настроек
- Поведение разделителя. Чтобы изменить способ рисования разделителя, обновите стиль для разделителей настроек и измените значение для следующего:
-
allowDividerAbove
-
allowDividerBelow
-
allowDividerAfterLastItem
- Цвет темы ActionBar. Действия должны использовать
Theme.DeviceDefault.Settings
в качестве темы или создать собственную тему, используя Theme.DeviceDefault.Settings
в качестве родительской. - Виджет заголовка приложения. Используйте сеттеры в AppHeaderController для настройки каждого поля и вызовите
build()
после установки всех полей. - Кнопка «Развернуть»:
- Чтобы полностью отключить эту функцию, переопределите конструктор для ProgressiveDisclosureMixin и установите keepExpanded в значение true.
- Чтобы настроить количество отображаемых изначально элементов, вызовите метод
ProgressiveDisclosureMixin.setTileLimit()
во время метода onAttach(Context)
фрагмента.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Patterns and components\n\nIn Android 8.0, the Settings menu gains several components and widgets that\ncover common uses. Device manufacturers and developers are encouraged to use the\ncommon components when extending the Settings app so new user interfaces stay\nconsistent with the existing Settings UI.\n\n\nHere is a summary of improvements:\n\n- Divider behavior change in support library Preference framework. Divider is now drawn between categories.\n- ActionBar theme change. The ActionBar now uses light color theme, with accent color text.\n- New preference layout. The space for icons remains even when a preference has no icon.\n\n\nNew widgets:\n\n- A header widget for app details. Displays app icon, app label and other information.\n- An expand button on some pages. Page can start as collapsed and hide less important items until user clicks expand button.\n- Default app picker UI:\n - The UI for choosing default browser, default phone app, etc.\n - Formerly a dialog, now it's a full screen radio button-based UI.\n- A \"MasterSwitch\" style preference. This is a preference with two click targets. Left target leads to a subsetting fragment or intent. Right target is a switch toggle, controlling on/off for the entire page.\n\nExamples and source\n-------------------\n\n- Divider behavior\n - All pages in Settings are modified to use the new divider behavior.\n - The divider behavior is defined as a ThemeOverlay in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- ActionBar theme change\n - All pages in Settings are modified to use the new ActionBar theme.\n - The theme is defined in Theme.DeviceDefault.Settings\n- New preference layout\n - Many pages in Settings are now using the new preference layout.\n - You can find the code in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- App header widget\n - Most app information pages in Settings are already implementing the new App header.\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java`\n- Expand button\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java`\n\n **Note:** This component must be used together with\n DashboardFragment. (See more details about DashboardFragment in [Updated Information Architecture](/docs/core/settings/info-architecture).)\n- Default app picker\n - You can find the code for base class in: \n `packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java`\n - There are several subclasses of DefaultAppPickerFragment, each implementing a picker for different intent.\n- *MasterSwitch* style preference\n - Code is at: `https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java`\n - An example use case is Wi-Fi primary switch. You can find an example at: `packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java`\n\nImplementation\n--------------\n\n\nDevice manufacturers can start using all of the new components out of the box.\nIf OEMs decide to implement a new \"MasterSwitch\" style preference or default app\npicker, they should follow the examples in this document and the reference files\n(Javadoc) written with each component for more details.\n\nCustomize the settings menu\n---------------------------\n\n- Divider behavior. To change how divider is drawn, update the style for Settings dividers and change the value for the following:\n - `allowDividerAbove`\n - `allowDividerBelow`\n - `allowDividerAfterLastItem`\n- ActionBar theme color. Activities should use `Theme.DeviceDefault.Settings` as their theme, or create a custom theme using `Theme.DeviceDefault.Settings` as parent.\n- App header widget. Use setters in AppHeaderController to customize each field and call `build()` once all fields are set.\n- Expand button:\n - To fully disable the functionality, override the constructor for ProgressiveDisclosureMixin and set keepExpanded to true.\n - To customize how many items to show initially, call the `ProgressiveDisclosureMixin.setTileLimit()` method during fragment's `onAttach(Context)` method."]]