Dostosuj pasek narzędzi za pomocą nakładek zasobów środowiska wykonawczego

Przegląd układu podstawowego

Pasek narzędzi car-ui-lib można dostosować za pomocą pliku układu car_ui_base_layout_toolbar.xml . Nazywa się to paskiem narzędzi *układu podstawowego*, ponieważ ten plik układu zawiera FrameLayout o identyfikatorze car_ui_base_layout_content_container , który będzie zawierał całą zawartość aplikacji wkrótce po powiększeniu układu. Ta struktura umożliwia producentowi OEM umieszczenie paska narzędzi w innych miejscach niż górna część ekranu.

Możliwe układy
Układ paska narzędzi 1Układ paska narzędzi 2Układ paska narzędzi 3
Układ paska narzędzi 4Układ paska narzędzi 5Układ paska narzędzi 6

Zmieniając parametry układu w car_ui_base_layout_content_container , aplikację można skompresować do mniejszego obszaru, aby zwolnić miejsce na pasek narzędzi. Jednak niektóre dostosowania mogą wymagać, aby pasek narzędzi był przezroczysty i nałożony na aplikację. W takim przypadku widoki można oznaczyć tagiem car_ui_top/bottom/left/right_inset . Jeśli car-ui-lib wykryje widok z takim tagiem, przekazuje aplikacji położenie i wymiary tego widoku, dzięki czemu może wciąć zawartość o tę wartość do wewnątrz, zachowując jednocześnie rozsądne tło w przestrzeni pod paskiem narzędzi . Na przykład w przypadku większości aplikacji pierwszy element w CarUiRecyclerView zaczyna się poniżej określonych wstawek, ale nadal jest widoczny za paskiem narzędzi, gdy użytkownik przewija w dół.

Wsparcie obrotowe

Aby obsługiwać kontrolery obrotowe, układ podstawowy musi zawierać FocusParkingView tak wcześnie, jak to możliwe. Ten widok jest aktywny, gdy użytkownik nie widzi fokusu. Pasek narzędzi musi być również owinięty w FocusParkingView , który określa, że ​​jest to osobna strefa przesuwania dla kontrolera obrotowego. Jeśli nie jest on opakowany w FocusParkingView, użytkownik nie może wchodzić w interakcję z paskiem narzędzi za pomocą kontrolera obrotowego.

Zakładki

Karty paska narzędzi są dostosowywane za pomocą plików układu car_ui_toolbar_tab_item.xml lub car_ui_toolbar_tab_item_flexible.xml . Nie ma funkcjonalnej różnicy pomiędzy plikami, zasób logiczny car_ui_toolbar_tab_flexible_layout określa, który jest używany. W rezultacie zaleca się ustawienie car_ui_toolbar_tab_flexible_layout na wartość false i dostosowywanie tylko zwykłego pliku układu.

ImageView karty zostanie zabarwiony kolorem car_ui_toolbar_tab_item_selector w kodzie Java, więc car_ui_toolbar_tab_item_selector musi zostać dostosowany wraz z układem. Aplikacje mogą zażądać, aby ikony ich kart również nie były zabarwione tym kolorem.

Wygląd tekstu karty TextView ma ustawioną wartość TextAppearance.CarUi.Widget.Toolbar.Tab lub TextAppearance.CarUi.Widget.Toolbar.Tab.Selected w kodzie Java, więc wygląd tekstu ustawiony w pliku układu nie będzie stosowany. Te style również muszą być dostosowane.

MenuItems to przyciski w prawym górnym rogu domyślnego paska narzędzi. Mogą to być tekst, ikony, ikony i tekst lub przełączniki. Wszystkie te odmiany są częścią pliku układu car_ui_toolbar_menu_item , ponieważ MenuItems muszą mieć możliwość przełączania się między poszczególnymi formularzami, jeśli aplikacja tego zażąda.

MenuItems może być podstawowym , co powoduje nadmuchanie innego pliku układu: car_ui_toolbar_menu_item_primary . Podstawowy element MenuItem musi wizualnie różnić się od normalnego elementu MenuItem, na przykład za pomocą przycisku z obramowaniem/bez obramowania. Domyślnie car_ui_toolbar_menu_item_primary po prostu przekierowuje do car_ui_toolbar_menu_item , więc wyglądają tak samo.

MenuItems można aktywować , co jest kolejnym stanem wizualnym wskazującym, że element MenuItem jest przełączany. Ten stan jest implementowany przez wywołanie metody setActivated(true) w widoku MenuItem, co powoduje dodanie stanu state_activated do wszystkich obiektów do rysowania w widokach MenuItem. Na ten stan rysowania można odpowiedzieć za pomocą selektora rysowalnego w nakładce zasobów środowiska wykonawczego (RRO).

MenuItems można ograniczyć pod względem UX , gdy pojazd jest w ruchu. Ograniczony UX to po prostu kolejny stan, który można narysować, taki jak aktywowany , ale tym razem stan jest zdefiniowany w aplikacji, a nie w środowisku Androida. Oznacza to, że na atrybut state_ux_restricted należy również nałożyć RRO, tak aby atrybut zdefiniowany w RRO odpowiadał atrybutowi zdefiniowanemu w aplikacji.

Pasek wyszukiwania znajduje się w oddzielnym pliku układu car_ui_toolbar_search_view , aby poprawić wydajność powiększania układu w przypadku aplikacji, które nie potrzebują paska wyszukiwania. FrameLayout o identyfikatorze car_ui_toolbar_search_view_container będzie zawierał pasek wyszukiwania, gdy zostanie zawyżony.