使用運行時資源覆蓋自訂工具列

基地佈局概覽

car-ui-lib 工具列是透過car_ui_base_layout_toolbar.xml佈局檔自訂的。它被稱為 *基本佈局* 工具列,因為此佈局檔案包含一個 ID 為car_ui_base_layout_content_containerFrameLayout ,它將在佈局膨脹後不久包含應用程式的所有內容。這種結構允許 OEM 將工具列放置在螢幕頂部以外的位置。

可能的佈局
工具列佈局1工具列佈局2工具列佈局3
工具列佈局 4工具列佈局 5工具列佈局 6

透過更改car_ui_base_layout_content_container上的佈局參數,可以將應用程式壓縮到更小的區域,以為工具列騰出空間。但是,某些自訂可能要求工具列透明並覆蓋在應用程式頂部。在這種情況下,視圖可以用car_ui_top/bottom/left/right_inset標記。如果car-ui-lib 偵測到帶有此類標籤的視圖,它會將該視圖的位置和尺寸傳達給應用程序,以便它可以將其內容向內縮進該量,但仍然在工具列下方的空間中保留合理的背景。例如,大多數應用程式的 CarUiRecyclerView 中的第一項將在指定插圖下方開始,但當使用者向下捲動時,在工具列後面仍然可見。

旋轉支撐

為了支援旋轉控制器,基本佈局必須儘早在佈局中包含FocusParkingView 。當使用者沒有可見焦點時,此視圖將獲得焦點。工具列也必須包含在FocusParkingView中,它指定它是旋轉控制器的單獨微移區域。如果它沒有包裝在 FocusParkingView 中,使用者無法使用旋轉控制器與工具列互動。

選項卡

工具列標籤由car_ui_toolbar_tab_item.xmlcar_ui_toolbar_tab_item_flexible.xml佈局檔案自訂。這些檔案之間沒有功能差異, car_ui_toolbar_tab_flexible_layout布林資源決定使用哪個檔案。因此,建議將car_ui_toolbar_tab_flexible_layout設為false並且僅自訂常規佈局檔。

選項卡的ImageView將使用 Java 程式碼中的顏色car_ui_toolbar_tab_item_selector進行著色,因此car_ui_toolbar_tab_item_selector必須與佈局一起自訂。應用程式可以請求其選項卡的圖示也不要使用此顏色。

該選項卡的TextView在 Java 程式碼中將其文字外觀設定為TextAppearance.CarUi.Widget.Toolbar.TabTextAppearance.CarUi.Widget.Toolbar.Tab.Selected ,因此佈局檔案上設定的文字外觀將不適用。這些樣式也必須自訂。

MenuItems是預設工具列右上角的按鈕。它們可以是文字、圖示、圖示和文字或開關。這些變體都是car_ui_toolbar_menu_item佈局檔案的一部分,因為如果應用程式要求, MenuItems需要能夠在每個表單之間進行更改。

MenuItems可以是primary ,它會擴充一個不同的版面配置檔案: car_ui_toolbar_menu_item_primary 。主選單項目在視覺上必須與普通選單項目不同,例如透過有邊框/無邊框按鈕。預設情況下, car_ui_toolbar_menu_item_primary僅重定向到car_ui_toolbar_menu_item ,因此它們看起來相同。

MenuItems可以被activate ,這是另一種視覺狀態,指示此 MenuItem 已切換。此狀態是透過在 MenuItem 視圖上呼叫setActivated(true)來實現的,這會將state_activated狀態新增至 MenuItem 視圖中的所有可繪製物件。可以使用運行時資源覆蓋 (RRO) 中的可繪製選擇器來回應此可繪製狀態。

當車輛移動時, MenuItems可能會受到使用者體驗限制。 UX 限制只是另一種可繪製狀態,如激活,但這次狀態是在應用程式中定義的,而不是在 Android 框架中定義的。這意味著state_ux_restricted屬性也必須與 RRO 重疊,以便 RRO 中定義的屬性與應用程式中定義的屬性相符。

搜尋列包含在單獨的car_ui_toolbar_search_view佈局檔案中,以提高不需要搜尋列的應用程式的佈局膨脹效能。 id 為car_ui_toolbar_search_view_containerFrameLayout在膨脹時將包含搜尋列。