Passen Sie die Symbolleiste mit Laufzeitressourcen-Overlays an

Ü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
Symbolleistenlayout 1Symbolleistenlayout 2Symbolleistenlayout 3
Symbolleistenlayout 4Symbolleistenlayout 5Symbolleistenlayout 6

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.

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.

Die Suchleiste ist in einer separaten Layoutdatei car_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.