A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Padrões e componentes
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
No Android 8.0, o menu "Configurações" ganhou vários componentes e widgets que
abrangem usos comuns. Recomendamos que fabricantes de dispositivos e desenvolvedores usem os
componentes comuns ao estender o app Configurações para que as novas interfaces de usuário permaneçam
consistentes com a interface do app Configurações.
Confira um resumo das melhorias:
- Mudança de comportamento do divisor no framework de preferências da biblioteca de suporte. O divisor agora é
exibido entre as categorias.
- Mudança de tema da ActionBar. A ActionBar agora usa o tema de cores claras com
texto de cor de destaque.
- Novo layout de preferências. O espaço para ícones permanece mesmo quando uma preferência
não tem um ícone.
Novos widgets:
- Um widget de cabeçalho para detalhes do app. Mostra o ícone e o rótulo do app, além de
outras informações.
- Um botão de expansão em algumas páginas. A página pode começar contraída e ocultar itens menos
importantes até que o usuário clique no botão de expansão.
- Interface padrão do seletor de apps:
- A interface para escolher o navegador padrão, o app de telefone padrão etc.
- Antes uma caixa de diálogo, agora é uma IU baseada em botões de opção em tela cheia.
- Uma preferência de estilo "MasterSwitch". Essa é uma preferência com dois alvos de clique. O destino à esquerda leva a um fragmento ou intent de subconjunto. O alvo à direita é um
interruptor que controla a ativação/desativação de toda a página.
Exemplos e origem
- Comportamento do divisor
- Todas as páginas em "Configurações" são modificadas para usar o novo comportamento do divisor.
- O comportamento do divisor é definido como um ThemeOverlay em:
packages/apps/Settings/res/values/styles_preference.xml
- Mudança de tema da ActionBar
- Todas as páginas em "Configurações" são modificadas para usar o novo tema da ActionBar.
- O tema é definido em Theme.DeviceDefault.Settings
- Novo layout de preferências
- Muitas páginas nas Configurações agora usam o novo layout de preferências.
- Você pode encontrar o código em:
packages/apps/Settings/res/values/styles_preference.xml
- Widget de cabeçalho do app
- A maioria das páginas de informações do app nas Configurações já está implementando o
novo cabeçalho do app.
- Confira exemplos e códigos em:
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- Botão "Abrir"
- Seletor de apps padrão
- Você pode encontrar o código da classe base em:
packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
- Há várias subclasses de DefaultAppPickerFragment, cada uma implementando
um seletor para diferentes intents.
- Preferência de estilo MasterSwitch
- O código está em:
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- Um exemplo de caso de uso é o roteador principal do Wi-Fi. Confira um exemplo em:
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
Implementação
Os fabricantes de dispositivos podem começar a usar todos os novos componentes imediatamente.
Se os OEMs decidirem implementar uma nova preferência de estilo "MasterSwitch" ou um seletor de apps
padrão, eles vão precisar seguir os exemplos deste documento e os arquivos de referência
(Javadoc) criados com cada componente para mais detalhes.
Personalizar o menu de configurações
- Comportamento do divisor. Para mudar a forma como o divisor é desenhado, atualize o estilo dos divisores de configurações e
mude o valor para o seguinte:
allowDividerAbove
allowDividerBelow
allowDividerAfterLastItem
- Cor do tema da ActionBar. As atividades precisam usar
Theme.DeviceDefault.Settings
como tema ou
criar um tema personalizado usando Theme.DeviceDefault.Settings
como pai.
- Widget de cabeçalho do app. Use setters no AppHeaderController para personalizar cada campo e chamar
build()
quando todos os campos estiverem definidos.
- Botão "Abrir":
- Para desativar totalmente a funcionalidade, substitua o construtor de
ProgressiveDisclosureMixin e defina keepExpanded como verdadeiro.
- Para personalizar quantos itens mostrar inicialmente, chame o
método
ProgressiveDisclosureMixin.setTileLimit()
durante o método
onAttach(Context)
do fragmento.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 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."]]