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

Présentation de la disposition 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 . On l'appelle la barre d'outils *mise en page de base* car ce fichier de mise en page contient un FrameLayout avec l'identifiant 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 à des emplacements autres que le haut de l'écran.

Dispositions possibles
Disposition de la barre d'outils 1Disposition de la barre d'outils 2Disposition de la barre d'outils 3
Disposition de la barre d'outils 4Disposition de la barre d'outils 5Disposition 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 libérer de l'espace pour la barre d'outils. Cependant, certaines personnalisations peuvent nécessiter que la barre d'outils soit transparente et superposée au-dessus de l'application. Dans ce cas, les vues peuvent être étiqueté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 auront le premier élément de leur CarUiRecyclerView démarrer en dessous des encarts spécifiés, mais seront toujours visibles derrière la barre d'outils lorsque l'utilisateur fait défiler vers le bas.

Soutien rotatif

Pour prendre en charge les contrôleurs rotatifs, la configuration de base doit contenir un FocusParkingView le plus tôt possible dans la configuration. Cette vue est ce qui est mis au point lorsqu'aucun focus n'est visible pour l'utilisateur. La barre d'outils doit également être enveloppée dans un FocusParkingView , qui spécifie qu'il s'agit d'une zone de déplacement distincte pour le contrôleur rotatif. S'il n'est pas enveloppé dans un FocusParkingView, l'utilisateur ne peut pas interagir avec la barre d'outils avec le contrôleur rotatif.

Onglets

Les onglets de la barre d'outils sont personnalisés par les fichiers de présentation car_ui_toolbar_tab_item.xml ou car_ui_toolbar_tab_item_flexible.xml . Il n'y a pas de différence fonctionnelle entre les fichiers, la ressource booléenne car_ui_toolbar_tab_flexible_layout détermine laquelle est utilisée. Par conséquent, il est recommandé de conserver car_ui_toolbar_tab_flexible_layout défini sur false et de personnaliser uniquement le fichier de mise en page standard.

L' ImageView de l'onglet sera teinté avec la couleur car_ui_toolbar_tab_item_selector dans le code Java, donc car_ui_toolbar_tab_item_selector doit être personnalisé à côté de la mise en page. Les applications peuvent également demander que les icônes de leurs onglets ne soient pas teintées avec cette couleur.

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

MenuItems sont les boutons dans le coin supérieur droit 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 commutateurs. Ces variations font toutes partie du fichier de mise en page car_ui_toolbar_menu_item , car les MenuItems doivent pouvoir changer entre chaque formulaire si l'application le demande.

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

MenuItems can be activated , qui est un autre état visuel qui indique que ce MenuItem est basculé. Cet état est implémenté en appelant setActivated(true) sur la vue MenuItem, qui ajoute l'état state_activated à tous les drawables dans les vues MenuItem. Il est possible de répondre à cet état dessinable avec un sélecteur dessinable dans la superposition de ressources d'exécution (RRO).

MenuItems peuvent être restreints UX lorsque le véhicule est en mouvement. UX restreint n'est qu'un autre état dessinable comme activateur , mais cette fois, l'état est défini dans l'application au lieu du framework Android. Cela signifie que l'attribut state_ux_restricted doit également être superposé avec le RRO, afin que l'attribut défini dans le 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 de gonflage de la mise en page pour les applications qui n'ont pas besoin de barre de recherche. Le FrameLayout avec l'identifiant car_ui_toolbar_search_view_container contiendra la barre de recherche lorsqu'elle sera gonflée.