Übersicht über das Grundlayout
Die car-ui-lib-Symbolleiste wird über die Layoutdatei car_ui_base_layout_toolbar.xml
angepasst. Sie wird als *Basislayout*-Symbolleiste bezeichnet, da diese Layoutdatei ein FrameLayout
mit der ID car_ui_base_layout_content_container
enthält, das kurz nach dem Aufblasen des Layouts den gesamten Inhalt der App enthält. Diese Struktur ermöglicht es dem OEM, die Symbolleiste an anderen Stellen als am oberen Bildschirmrand zu platzieren.
Mögliche Layouts | ||
---|---|---|
Durch Ändern der Layoutparameter im car_ui_base_layout_content_container
kann die App auf einen kleineren Bereich komprimiert werden, um Platz für die Symbolleiste zu schaffen. Bei einigen Anpassungen kann es jedoch erforderlich sein, dass die Symbolleiste transparent ist und über der App liegt. In diesem Fall können Ansichten mit car_ui_top/bottom/left/right_inset
getaggt werden. Wenn car-ui-lib eine Ansicht mit einem solchen Tag erkennt, teilt es der App die Position und Abmessungen dieser Ansicht mit, sodass sie ihren Inhalt um diesen Betrag nach innen einrücken kann, aber dennoch einen angemessenen Hintergrund im Bereich unter der Symbolleiste beibehalten kann . Beispielsweise beginnt bei den meisten Apps das erste Element in ihrer CarUiRecyclerView unterhalb der angegebenen Einfügungen, ist aber immer noch hinter der Symbolleiste sichtbar, wenn der Benutzer nach unten scrollt.
Rotary-Unterstützung
Um Drehregler zu unterstützen, muss das Basislayout so früh wie möglich im Layout eine FocusParkingView
enthalten. Diese Ansicht wird fokussiert, wenn für den Benutzer kein Fokus sichtbar ist. Die Symbolleiste muss außerdem in eine FocusParkingView
eingeschlossen werden, die angibt, dass es sich um eine separate Anstellzone für den Drehregler handelt. Wenn es nicht in eine FocusParkingView eingeschlossen ist, kann der Benutzer nicht mit dem Drehregler mit der Symbolleiste interagieren.
Tabs
Symbolleistenregisterkarten werden entweder durch die Layoutdateien car_ui_toolbar_tab_item.xml
oder car_ui_toolbar_tab_item_flexible.xml
angepasst. Es gibt keinen funktionalen Unterschied zwischen den Dateien. Die boolesche Ressource car_ui_toolbar_tab_flexible_layout
bestimmt, welche verwendet wird. Daher wird empfohlen, car_ui_toolbar_tab_flexible_layout
auf false
zu belassen und nur die reguläre Layoutdatei anzupassen.
Die ImageView
der Registerkarte wird im Java-Code mit der Farbe car_ui_toolbar_tab_item_selector
getönt, daher muss car_ui_toolbar_tab_item_selector
zusammen mit dem Layout angepasst werden. Apps können verlangen, dass die Symbole ihrer Registerkarten ebenfalls nicht mit dieser Farbe eingefärbt werden.
Für die TextView
der Registerkarte ist die Textdarstellung im Java-Code entweder auf TextAppearance.CarUi.Widget.Toolbar.Tab
oder TextAppearance.CarUi.Widget.Toolbar.Tab.Selected
festgelegt, sodass die in der Layoutdatei festgelegte Textdarstellung nicht angewendet wird. Diese Stile müssen ebenfalls angepasst werden.
Menüelemente
MenuItems
sind die Schaltflächen in der oberen rechten Ecke der Standardsymbolleiste. Dies können Text, Symbole, Symbole und Text oder Schalter sein. Diese Variationen sind alle Teil der Layoutdatei car_ui_toolbar_menu_item
, da die MenuItems
in der Lage sein müssen, zwischen den einzelnen Formularen zu wechseln, wenn die App dies anfordert.
MenuItems
können „primary“ sein, was eine andere Layoutdatei aufbläht: car_ui_toolbar_menu_item_primary
. Ein primäres MenuItem muss sich optisch vom normalen MenuItem unterscheiden, beispielsweise durch eine umrandete/randlose Schaltfläche. Standardmäßig leitet car_ui_toolbar_menu_item_primary
nur zu car_ui_toolbar_menu_item
um, sodass sie gleich aussehen.
MenuItems
können aktiviert werden. Dies ist ein weiterer visueller Zustand, der anzeigt, dass dieses MenuItem umgeschaltet ist. Dieser Status wird durch den Aufruf von setActivated(true)
in der MenuItem-Ansicht implementiert, wodurch der state_activated
Status allen Drawables in den MenuItem-Ansichten hinzugefügt wird. Auf diesen Zeichenzustand kann mit einem Zeichenwähler im Runtime Resource Overlay (RRO) reagiert werden.
MenuItems
können UX-beschränkt sein, wenn das Fahrzeug fährt. „UX eingeschränkt“ ist nur ein weiterer zeichnbarer Status wie „activated“ , aber dieses Mal wird der Status in der App und nicht im Android-Framework definiert. Dies bedeutet, dass das Attribut state_ux_restricted
auch mit dem RRO überlagert werden muss, damit das im RRO definierte Attribut mit dem in der App definierten Attribut übereinstimmt.
Suchen
Die Suchleiste ist in einer separaten Layoutdateicar_ui_toolbar_search_view
“ enthalten, um die Leistung bei der Layoutinflation für Apps zu verbessern, die keine Suchleiste benötigen. Das FrameLayout
mit der ID car_ui_toolbar_search_view_container
enthält die Suchleiste, wenn es aufgeblasen ist.