自訂車輛 UI 偏好設定

本頁將說明如何在 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 參考應用程式。例如:

車輛 UI 偏好設定版面配置

圖 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_containerandroid.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