Android 12 引進了雙窗格設計,左側是靜態 L0 選單,右側是內容窗格。此功能引入了許多新的自訂選項。本頁詳細介紹了這些功能,並解釋瞭如何自訂您自己的首選項。
恢復為單窗格
預設情況下,當應用程式視窗寬度大於或等於 1400dp 時,CarSettings 現在顯示雙窗格視圖,否則顯示單窗格視圖。若要針對特定裝置對此進行自訂,請使用執行時間資源覆寫 (RRO) 來定位必要的設定值:
價值 | 描述 |
---|---|
config_global_force_single_pane | 如果整個應用程式要在單一窗格配置中執行,則設定為true 。 |
config_homepage_fragment_class | 指定主頁的起始片段。在雙窗格中,這用於內容窗格中的初始片段。在單窗格中,這應該是主頁片段。 |
標題鍵
由於不同的 CarSettings 活動可以具有自訂的 IA,因此提供了標頭鍵映射來簡化自訂。在AndroidManifest.xml
中,每個支援雙窗格的 Activity 都在其元資料中指定了TOP_LEVEL_HEADER_KEY
。該值指向res/values/header_keys.xml
中指定的鍵,該鍵對應到起始片段所屬的頂層選單項目的首選項鍵。因此,如果更改活動的起始片段或重新排列 IA,使得特定片段屬於不同的頂級首選項,則可以更新header_keys.xml
檔案中的相關映射以指定正確的值。
自訂活動佈局
BaseCarSettingsActivity
的佈局位於res/layout/car_setting_activity
和以下部分:
價值 | 描述 |
---|---|
top_level_menu | 雙窗格配置中顯示的頂層選單片段。該部分的寬度由top_level_menu_width 指定。底盤底座佈局(帶有工具列)圍繞此視圖。 |
top_level_divider | 分割兩個窗格的垂直線,您可以使用top_level_divider_width 自訂其寬度。 |
fragment_container_wrapper | 內容窗格(或單窗格配置中的主窗格)的包裝佈局。機箱基本佈局(帶有工具列)圍繞此視圖。 |
settings_focus_parking_view | FocusParkingView 的自訂實現,可在需要時保持旋轉焦點。 |
fragment_container | 主要內容容器。內容片段使用它作為目標佈局。 |
restricted_message | 將在BaseFragment 實例上顯示的 UX 限制的阻塞視圖。 |
圖 1.雙窗格佈局
頂級偏好
頂級首選項是自訂 CarUiPreferences,其佈局略有修改,可變更首選項高度和背景形狀。有許多不同的方法可以自訂這些首選項的外觀:
價值 | 描述 |
---|---|
res/layout/top_level_preference.xml | 覆蓋整個首選項版面。 |
top_level_preference_min_height | 頂層首選項的最小高度。根據內容(例如,存在字幕),偏好可能高於此值。 |
top_level_preference_corner_radius | 圓角半徑。 |
top_level_preference_background | 當前未突出顯示時的頂級首選項的背景。 |
top_level_preference_highlight | 突出顯示時頂級首選項的背景。 |
頂級圖標
圖 2 說明了頂級圖示現在如何由彩色背景形狀內的向量圖示組成。此形狀目前配置為支援橢圓形或矩形形狀。預設情況下,形狀設定為橢圓形。
若要變更預設值,請修改config_top_level_icon_shape
中的值(其中 0 是矩形,1 是橢圓形)。這些圖示是透過將前景圖示從背景形狀插入top_level_foreground_icon_inset
來建立的。每個頂級圖示都有一個在res/values/colors.xml
中指定的前景色和一個在res/color
資料夾中指定的背景色。
若要建立自訂外觀,您可以覆寫所有顏色值。
圖 2.頂級首選項組件
屬於config_top_level_injection_categories
指定類別的注入首選項的圖示也被視為頂層圖示。提供的圖示插入與所有其他頂級圖示指定的相同值和相同形狀(見上文)。但是,背景是透過按順序查看以下屬性來確定的:
-
com.android.settings.bg.argb
來自註入應用程式的元資料。 -
com.android.settings.bg.hint
來自註入應用程式的元資料。 -
top_level_injected_default_background
在res/values/colors.xml
中指定。
若要忽略注入應用程式資料並始終使用預設背景,請將config_top_level_injection_background_always_use_default
設為true
。