Android 12 導入了雙窗格設計,左側為靜態 L0 選單,右側則是內容窗格。這項功能推出許多新的自訂選項。本頁會詳細說明這些功能,並說明如何自訂偏好設定。
還原為單一窗格
根據預設,如果應用程式視窗的寬度大於或等於 1400dp,CarSettings 就會顯示雙窗格檢視畫面,否則則會顯示單一窗格檢視畫面。如要針對特定裝置自訂這項設定,請使用執行階段資源覆蓋 (RRO) 指定必要的設定值:
值 | 說明 |
---|---|
config_global_force_single_pane |
如果整個應用程式要在單一檢視窗設定中執行,請將其設為 true 。 |
config_homepage_fragment_class |
指定首頁的起始片段。在雙窗格中,這會用於內容窗格中的初始片段。在單一窗格中,這應該是首頁片段。 |
標頭鍵
由於不同的 CarSettings 活動可自訂 IA,提供標頭鍵對應可簡化自訂作業。在 AndroidManifest.xml
中,每個支援雙窗格的活動都會在中繼資料內指定 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 |
內容窗格 (或單一窗格設定中的主要窗格) 的包裝函式版面配置。這個檢視畫面會包覆底層結構 baselayout (含工具列)。 |
settings_focus_parking_view |
自訂實作 FocusParkingView ,以便在需要時保留旋轉焦點。 |
fragment_container |
主要內容容器。內容片段會將此值做為目標版面配置。 |
restricted_message |
使用者體驗受限的封鎖檢視畫面,顯示在 BaseFragment 的執行個體上。 |
圖 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
。