基地佈局概覽
car-ui-lib 工具列是透過car_ui_base_layout_toolbar.xml
佈局檔自訂的。它被稱為 *基本佈局* 工具列,因為此佈局檔案包含一個 ID 為car_ui_base_layout_content_container
的FrameLayout
,它將在佈局膨脹後不久包含應用程式的所有內容。這種結構允許 OEM 將工具列放置在螢幕頂部以外的位置。
可能的佈局 | ||
---|---|---|
透過更改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.xml
或car_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.Tab
或TextAppearance.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_container
的FrameLayout
在膨脹時將包含搜尋列。