Android 12 introduce un design doppio riquadro, 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.
Ripristina 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 questa operazione per un dispositivo specifico, utilizza un overlay di risorse di runtime (RRO) che abbia 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 riquadro singolo. |
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 wrapper per il riquadro dei contenuti (o il riquadro principale nella 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 illustra come le icone di primo livello sono ora costituite da un'icona vettoriale all'interno di una forma di sfondo colorato. Questa forma è attualmente configurata per supportare una forma ovale e 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 inserite nello stesso valore e hanno la 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.argb
Metadati dell'app di inserimento.com.android.settings.bg.hint
Metadati dell'app che esegue l'iniezione.top_level_injected_default_background
specificato 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
.