Android 12 introduce un design a riquadro doppio, con un menu L0 statico a sinistra e un riquadro dei contenuti a destra. Questa funzionalità introduce molte nuove opzioni di personalizzazione. In questa pagina vengono descritte queste funzionalità e spiegato come personalizzare le tue preferenze.
Ripristinare il riquadro singolo
Per impostazione predefinita, ora Impostazioni auto mostra la visualizzazione a due riquadri quando la larghezza della finestra dell'app è maggiore o uguale a 1400 dp e la visualizzazione a riquadro singolo in caso contrario. Per personalizzare questo valore per un dispositivo specifico, utilizza un overlay delle risorse di runtime (RRO) per scegliere come target i valori di configurazione necessari:
| Valore | Descrizione |
|---|---|
config_global_force_single_pane |
Imposta su true se l'intera app deve essere eseguita in configurazione con un solo riquadro. |
config_homepage_fragment_class |
Specifica il frammento iniziale per la home page. In modalità a due riquadri, viene utilizzato per il frammento iniziale nel riquadro dei contenuti. In una visualizzazione a riquadro singolo, dovrebbe essere il frammento della home page. |
Chiavi intestazione
Poiché attività CarSettings diverse possono avere un'IA personalizzata, viene fornita una mappatura delle chiavi dell'intestazione per semplificare le personalizzazioni. In AndroidManifest.xml, ogni attività
che supporta il riquadro doppio ha un TOP_LEVEL_HEADER_KEY specificato nei metadati.
Questo valore fa riferimento a una chiave specificata in res/values/header_keys.xml, che viene mappata alla chiave delle preferenze dell'elemento del menu di primo livello a cui appartiene il frammento iniziale.
Pertanto, se il frammento iniziale di un'attività viene modificato o l'IA viene riorganizzata in modo che un determinato frammento rientri in una preferenza di primo livello diversa, le mappature pertinenti nel file header_keys.xml possono essere aggiornate per specificare il valore corretto.
Personalizzare il layout delle attività
Il layout per BaseCarSettingsActivity si trova in
res/layout/car_setting_activity e in queste sezioni:
| Valore | Descrizione |
|---|---|
top_level_menu |
Frammento di menu di primo livello mostrato nelle configurazioni con riquadri doppi. La larghezza di questa sezione è
specificata da top_level_menu_width. Un layout di base del telaio (con barra degli strumenti)
è inserito in questa visualizzazione. |
top_level_divider |
Linea verticale che divide i due riquadri e la cui larghezza puoi personalizzare con
top_level_divider_width. |
fragment_container_wrapper |
Layout del riquadro dei contenuti (o del riquadro principale in una configurazione a riquadro singolo). Questa visualizzazione è racchiusa in un layout di base del telaio (con barra degli strumenti). |
settings_focus_parking_view |
Implementazione personalizzata di FocusParkingView per mantenere attivo il controllo rotativo
quando necessario. |
fragment_container |
Contenitore dei contenuti principali. I frammenti di contenuti lo utilizzano come layout di destinazione. |
restricted_message |
Visualizzazione di blocco con limitazioni UX da mostrare nelle istanze di BaseFragment. |

Figura 1. Layout a doppio riquadro
Preferenze di primo livello
Le preferenze di primo livello sono CarUiPreferences personalizzate con un layout leggermente modificato per cambiare l'altezza della preferenza e la forma dello sfondo. Esistono molti modi diversi per personalizzare l'aspetto di queste preferenze:
| Valore | Descrizione |
|---|---|
res/layout/top_level_preference.xml |
Sostituire l'intero layout delle preferenze. |
top_level_preference_min_height |
Altezza minima della preferenza di primo livello. A seconda dei contenuti (ad esempio se è presente un sottotitolo), le preferenze potrebbero essere più alte di questo valore. |
top_level_preference_corner_radius |
Raggio della smussatura degli angoli. |
top_level_preference_background |
Sfondo delle preferenze di primo livello quando non sono attualmente evidenziate. |
top_level_preference_highlight |
Sfondo delle preferenze di primo livello quando sono evidenziate. |
Icone di primo livello
La Figura 2 mostra come le icone di primo livello ora siano costituite da un'icona vettoriale all'interno di una forma di sfondo colorata. Al momento questa forma è configurata per supportare una forma ovale o rettangolare. Per impostazione predefinita, la forma è impostata su ovale.
Per modificare il valore predefinito, modifica il valore in config_top_level_icon_shape
(dove 0 è un rettangolo e 1 è un ovale). Le icone vengono create inserendo l'icona in primo piano contop_level_foreground_icon_inset dalla forma di sfondo. Ogni icona di primo livello ha un colore di primo piano specificato in res/values/colors.xml e un colore di sfondo specificato nella cartella res/color.
Per creare un aspetto personalizzato, puoi sostituire tutti i valori di colore.

Figura 2. Componenti delle preferenze di primo livello
Anche le icone per le preferenze iniettate che rientrano nelle categorie specificate da
config_top_level_injection_categories vengono trattate come icone di primo livello.
Le icone fornite sono rientrate dello stesso valore e nella stessa forma specificata per tutte le altre icone di primo livello (vedi sopra). Tuttavia, lo sfondo viene determinato esaminando i seguenti attributi nell'ordine indicato:
com.android.settings.bg.argbMetadati dell'app che esegue l'iniezione.com.android.settings.bg.hintMetadati dell'app che esegue l'iniezione.top_level_injected_default_backgroundspecificato inres/values/colors.xml.
Per ignorare l'inserimento dei dati dell'app e utilizzare sempre lo sfondo predefinito, imposta
config_top_level_injection_background_always_use_default su true.