Personalizza la barra degli strumenti con sovrapposizioni di risorse di runtime

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
Disposizione della barra degli strumenti 1Disposizione della barra degli strumenti 2Disposizione della barra degli strumenti 3
Disposizione della barra degli strumenti 4Disposizione della barra degli strumenti 5Disposizione della barra degli strumenti 6

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.

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.

La barra di ricerca è contenuta in un file di layout car_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.