本頁將說明如何在
com.android.car.ui.preference
套件,包含 UI 元素
用於呈現應用程式的偏好設定
大多數元素都是子類別,做為您新增的 com.androidx.preference
類別
CarUi 自訂。在多數情況下,您可以使用
com.android.car.ui.preferences
套件,使用
com.android.car.PreferenceFragment
。全部取代為 PreferenceFragment
androidx.preference
元素及其對等項目
car.ui.preferences
。如要查看這些功能的實際運作情形,請參閱 car-ui-lib
Paintbooth 參考應用程式。例如:
圖 1. 車輛 UI 偏好設定版面配置。
可用的偏好設定類型
本節將說明 Car UI 偏好設定類型。
PreferenceFragment
PreferenceFragment
是以下項目的子類別:
androidx.preference.PreferenceFragmentCompat
是基礎類別
客戶應使用。呼叫 setPreferenceScreen
時,這個類別
系統會自動將 androidx.preference
的元素替換成
與 car.ui.preference
元素對等的可用值相等。
<style name="PreferenceFragment.CarUi"> <item name="android:divider">?android:attr/listDivider</item> <item name="android:layout">@layout/car_ui_preference_fragment_with_toolbar</item> </style>
CarUiPreference
這相當於 CarUi 的 androidx.preference.Preference
類別,
支援下列屬性,這些屬性可使用執行階段資源重疊 (RRO) 進行自訂。
使用 CarUiPreference
樣式變化版本的所有其他 CarUi 元素也
支援下列屬性
<declare-styleable name="CarUiPreference"> <!-- Toggle for showing chevron --> <attr name="showChevron" format="boolean" /> <!-- Show ripple when disabled preference is clicked --> <attr name="showRippleOnDisabledPreference" format="boolean" /> </declare-styleable>
以下是 com.android.car.ui.preference
的基本樣式,該樣式會擴充
androidx.Preference
主題。chevron
可繪項目已定義於
car_ui_preference_icon_chevron.xml
。
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/car_ui_preference_icon_chevron_disabled"/> <item android:state_enabled="true" android:drawable="@drawable/car_ui_preference_icon_chevron_enabled"/> </selector>
ripple
定義於
car_ui_recyclerview_button_ripple_background
。
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/car_ui_ripple_color" />
<style name="Preference.CarUi"> <item name="allowDividerBelow">false</item> <item name="allowDividerAbove">false</item> <item name="android:layout">@layout/car_ui_preference</item> </style>
如果上方樣式的版面配置太過重疊,用戶端必須確認
新版面配置至少會提供符合
androidx
類別。這也適用於使用
套用這個基本樣式
CarUiDropDownPreference 偏好
這相當於 androidx.preference.DropDownPreference
的 CarUi
類別,並使用以下樣式:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButton 喜好
這個 androidx.preference.TwoStatePreference
的子類別
於期間加載 car_ui_radio_button_preference_widget
版面配置
和初始化。如果這個版面配置在 RRO 中重疊,新的版面配置則必須
包含類型為 android.widget.RadioButton
的元素,ID 是
R.id.radio_button
,且必須包含其他元素和 ID
基本類別所需。
CarUiSwitchPreference
這相當於 androidx.preference.SwitchPreference
類別的 CarUi。
差別在於如未啟用這個元素,系統會顯示浮動式訊息。浮動式訊息
可以呼叫
有 setMessageToShowWhenDisabledPreferenceClicked
種方法
Android 10 和 Android 11。這個元素
使用下列樣式:
<style name="Preference.CarUi.SwitchPreference"> <item name="android:widgetLayout">@layout/car_ui_preference_widget_switch</item> <item name="android:switchTextOn">@string/car_ui_preference_switch_on</item> <item name="android:switchTextOff">@string/car_ui_preference_switch_off</item> </style>
CarUiTwoActionPreference
啟用次要動作的 CarUiPreference
子類別。透過
以下提供可用來自訂此元素的屬性:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
此元素使用與基礎類別相同的樣式,因此需要
R.id.action_widget_container
,android.R.id.widget_frame
。
CarUiDialogFragment
此類別借用原樣:
androidx.preference.PreferenceDialogFragmentCompat
加上一些新增內容
也就是 CarUi 的專用程式碼用戶端應使用這個類別的子類別
主題平台「AlertDialog
」。
PreferenceDialogFragment
CarUiDialogFragment
的直接子類別。用戶端應將此類別設為子類別
來呈現任何主題的平台 AlertDialog
。
CarUiEditTextPreference
這相當於 androidx.preference.EditTextPreference
的 CarUi
類別:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
如果上方樣式的版面配置已經重疊,用戶端必須確定新的版面配置
會提供 androidx.preference.EditTextPreference
類別所預期的 ID。
編輯文字偏好設定對話方塊片段
PreferenceDialogFragment
的直接子類別。此外,CarUi 相當於
androidx.preference.PreferenceDialogFragments
類別。客戶應該
使用此類別來展示任何主題的平台 AlertDialog
。
CarUiSeekBarDialogPreference
實作 androidx.preference.DialogPreference
類別。
透過這種方式
跳轉滑桿
功能:
<style name="Preference.CarUi.SeekBarPreference"> <item name="android:layout">@layout/car_ui_preference_widget_seekbar</item> <item name="adjustable">true</item> <item name="showSeekBarValue">false</item> </style>
SeekBarPreferenceDialogFragment
提供版面配置的片段,在對話方塊中含有 SeekBar。
CarUiListPreference
CarUi 相當於 androidx.preference.ListPreference
類別。
清單偏好設定片段
提供版面配置的片段
其中 androidx.preference.ListPreference
。
CarUiMultiSelectListPreference
CarUi 相當於 androidx.preference.Preference
類別。
多重選取清單偏好設定片段
提供版面配置的片段
其中 com.android.car.ui.CarUiMultiSelectListPreference
。