Personnaliser la barre d'outils avec des superpositions de ressources d'exécution

Présentation de la mise en page de base

La barre d'outils car-ui-lib est personnalisée via le fichier de mise en page car_ui_base_layout_toolbar.xml. Elle est appelée barre d'outils de la *mise en page de base* car ce fichier de mise en page contient un FrameLayout avec l'ID car_ui_base_layout_content_container, qui contiendra tout le contenu de l'application peu de temps après le gonflement de la mise en page. Cette structure permet à l'OEM de placer la barre d'outils à d'autres endroits que le haut de l'écran.

Mises en page possibles
Présentation 1 de la barre d'outils Mise en page de la barre d'outils 2 Présentation 3 de la barre d'outils
Présentation 4 de la barre d'outils Présentation 5 de la barre d'outils Présentation de la barre d'outils 6

En modifiant les paramètres de mise en page sur car_ui_base_layout_content_container, l'application peut être compressée dans une zone plus petite pour laisser de la place à la barre d'outils. Toutefois, certaines personnalisations peuvent nécessiter que la barre d'outils soit transparente et superposée à l'application. Dans ce cas, les vues peuvent être taguées avec car_ui_top/bottom/left/right_inset. Si car-ui-lib détecte une vue avec une telle balise, il communique la position et les dimensions de cette vue à l'application afin qu'elle puisse indenter son contenu vers l'intérieur de cette quantité, tout en conservant un arrière-plan raisonnable dans l'espace sous la barre d'outils. Par exemple, la plupart des applications démarrent le premier élément de leur CarUiRecyclerView en dessous des marges intérieures spécifiées, mais restent visibles derrière la barre d'outils lorsque l'utilisateur fait défiler l'écran vers le bas.

Prise en charge des dispositifs rotatifs

Pour prendre en charge les contrôleurs rotatifs, la mise en page de base doit contenir un FocusParkingView dès que possible dans la mise en page. C'est cette vue qui est mise au point lorsqu'aucun élément n'est visible par l'utilisateur. La barre d'outils doit également être encapsulée dans un FocusParkingView, ce qui spécifie qu'il s'agit d'une zone de contact distincte pour le contrôleur rotatif. S'il n'est pas encapsulé dans un FocusParkingView, l'utilisateur ne peut pas interagir avec la barre d'outils à l'aide du contrôleur rotatif.

Onglets

Les onglets de la barre d'outils sont personnalisés par les fichiers de mise en page car_ui_toolbar_tab_item.xml ou car_ui_toolbar_tab_item_flexible.xml. Il n'existe aucune différence fonctionnelle entre les fichiers. La ressource booléenne car_ui_toolbar_tab_flexible_layout détermine celle qui est utilisée. Par conséquent, nous vous recommandons de laisser car_ui_toolbar_tab_flexible_layout défini sur false et de ne personnaliser que le fichier de mise en page standard.

Le ImageView de l'onglet sera teinté de la couleur car_ui_toolbar_tab_item_selector dans le code Java. car_ui_toolbar_tab_item_selector doit donc être personnalisé avec la mise en page. Les applications peuvent demander que les icônes de leur onglet ne soient pas teintées de cette couleur.

L'apparence du texte de l'TextView de l'onglet est définie sur TextAppearance.CarUi.Widget.Toolbar.Tab ou TextAppearance.CarUi.Widget.Toolbar.Tab.Selected dans le code Java. L'apparence du texte définie sur le fichier de mise en page ne s'applique donc pas. Ces styles doivent également être personnalisés.

MenuItems sont les boutons situés en haut à droite de la barre d'outils par défaut. Il peut s'agir de texte, d'icônes, d'icônes et de texte, ou de boutons. Ces variations font toutes partie du fichier de mise en page car_ui_toolbar_menu_item, car MenuItems doit pouvoir passer d'un formulaire à l'autre si l'application le demande.

MenuItems peut être principal, ce qui gonfle un autre fichier de mise en page : car_ui_toolbar_menu_item_primary. Un MenuItem principal doit être visuellement distinct du MenuItem normal, par exemple via un bouton avec ou sans bordure. Par défaut, car_ui_toolbar_menu_item_primary redirige simplement vers car_ui_toolbar_menu_item. Ils se ressemblent donc.

MenuItems peut être activé, ce qui est un autre état visuel qui indique que cet élément de menu est activé. Cet état est implémenté en appelant setActivated(true) sur la vue MenuItem, ce qui ajoute l'état state_activated à tous les drawables des vues de MenuItem. Cet état de drawable peut être traité à l'aide d'un sélecteur de drawable dans la superposition de ressources d'exécution (RRO).

MenuItems peut être limité en termes d'expérience utilisateur lorsque le véhicule est en mouvement. L'état "UX restricted" n'est qu'un autre état de drawable, comme activated, mais cette fois, l'état est défini dans l'application plutôt que dans le framework Android. Cela signifie que l'attribut state_ux_restricted doit également être superposé à l'élément RRO, de sorte que l'attribut défini dans l'élément RRO corresponde à l'attribut défini dans l'application.

La barre de recherche est contenue dans un fichier de mise en page car_ui_toolbar_search_view distinct afin d'améliorer les performances d'inflation de la mise en page pour les applications qui n'ont pas besoin d'une barre de recherche. Le FrameLayout avec l'ID car_ui_toolbar_search_view_container contiendra la barre de recherche lorsqu'il sera gonflé.