Panoramica del layout di base
La barra degli strumenti car-ui-lib è personalizzata tramite il file di layout car_ui_base_layout_toolbar.xml
. Si chiama barra degli strumenti *layout di base* perché questo file di layout contiene un FrameLayout
con id car_ui_base_layout_content_container
, che conterrà tutto il contenuto dell'app poco dopo che il layout sarà stato gonfiato. Questa struttura consente all'OEM di posizionare la barra degli strumenti in posizioni diverse dalla parte superiore dello schermo.
Possibili layout | ||
---|---|---|
Modificando i parametri di layout su car_ui_base_layout_content_container
, l'app può essere compressa in un'area più piccola per fare spazio alla barra degli strumenti. Tuttavia, alcune personalizzazioni potrebbero richiedere che la barra degli strumenti sia trasparente e sovrapposta all'app. In questo caso, le viste possono essere taggate con car_ui_top/bottom/left/right_inset
. Se car-ui-lib rileva una vista con tale tag, comunica la posizione e le dimensioni di quella vista all'app, in modo che possa rientrare il suo contenuto verso l'interno di tale importo, ma mantenendo comunque uno sfondo ragionevole nello spazio sotto la barra degli strumenti . Ad esempio, la maggior parte delle app avrà il primo elemento in CarUiRecyclerView che inizia sotto gli inserti specificati, ma sarà comunque visibile dietro la barra degli strumenti quando l'utente scorre verso il basso.
Sostegno al Rotary
Per supportare i controller rotativi, il layout di base deve contenere un FocusParkingView
il più presto possibile nel layout. Questa vista è ciò che viene messo a fuoco quando non c'è focus visibile all'utente. La barra degli strumenti deve anche essere racchiusa in un FocusParkingView
, che specifica che si tratta di una zona di spinta separata per la manopola di controllo. Se non è racchiuso in FocusParkingView, l'utente non può interagire con la barra degli strumenti con la manopola.
Schede
Le schede della barra degli strumenti sono personalizzate dai file di layout car_ui_toolbar_tab_item.xml
o car_ui_toolbar_tab_item_flexible.xml
. Non esiste alcuna differenza funzionale tra i file, la risorsa booleana car_ui_toolbar_tab_flexible_layout
determina quale viene utilizzato. Di conseguenza, si consiglia di mantenere car_ui_toolbar_tab_flexible_layout
impostato su false
e personalizzare solo il file di layout normale.
L' ImageView
della scheda verrà colorato con il colore car_ui_toolbar_tab_item_selector
nel codice Java, quindi car_ui_toolbar_tab_item_selector
deve essere personalizzato insieme al layout. Le app possono richiedere che anche le icone delle loro schede non siano colorate con questo colore.
Il TextView
della scheda ha l'aspetto del testo impostato su TextAppearance.CarUi.Widget.Toolbar.Tab
o TextAppearance.CarUi.Widget.Toolbar.Tab.Selected
nel codice Java, quindi l'aspetto del testo impostato nel file di layout non verrà applicato. Anche questi stili devono essere personalizzati.
Voci del menu
MenuItems
sono i pulsanti nell'angolo in alto a destra della barra degli strumenti predefinita. Possono essere testo, icone, icone e testo o interruttori. Queste variazioni fanno tutte parte del file di layout car_ui_toolbar_menu_item
, poiché i MenuItems
devono poter cambiare tra ogni modulo se l'app lo richiede.
MenuItems
può essere primario , il che gonfia un file di layout diverso: car_ui_toolbar_menu_item_primary
. Un MenuItem primario deve apparire visivamente distinto dal normale MenuItem, ad esempio tramite un pulsante con/senza bordo. Per impostazione predefinita, car_ui_toolbar_menu_item_primary
reindirizza semplicemente a car_ui_toolbar_menu_item
, quindi sembrano uguali.
È possibile attivare MenuItems
, che è un altro stato visivo che indica che questo MenuItem è attivato/disattivato. Questo stato viene implementato chiamando setActivated(true)
nella vista MenuItem, che aggiunge lo stato state_activated
a tutti i drawable nelle viste MenuItem. È possibile rispondere a questo stato disegnabile con un selettore disegnabile nell'overlay delle risorse di runtime (RRO).
MenuItems
possono essere limitati in termini di UX quando il veicolo è in movimento. UX limitato è solo un altro stato disegnabile comeactivated , ma questa volta lo stato è definito nell'app anziché nel framework Android. Ciò significa che anche l'attributo state_ux_restricted
deve essere sovrapposto all'RRO, in modo che l'attributo definito nell'RRO corrisponda all'attributo definito nell'app.
Ricerca
La barra di ricerca è contenuta in un file di layoutcar_ui_toolbar_search_view
separato, al fine di migliorare le prestazioni di inflazione del layout per le app che non necessitano di una barra di ricerca. Il FrameLayout
con id car_ui_toolbar_search_view_container
conterrà la barra di ricerca quando sarà gonfiata.