Menyesuaikan preferensi UI Mobil

Halaman ini menjelaskan cara menggunakan dan menyesuaikan elemen dalam Paket com.android.car.ui.preference, yang menyertakan elemen UI yang dapat digunakan untuk menyajikan preferensi untuk aplikasi.

Sebagian besar elemen membuat subclass dari class com.androidx.preference yang Anda tambahkan Penyesuaian CarUi. Dalam kebanyakan kasus, Anda dapat menggunakan elemen dalam paket com.android.car.ui.preferences dengan menggunakan com.android.car.PreferenceFragment. PreferenceFragment menggantikan semua androidx.preference elemen dengan padanannya di car.ui.preferences. Untuk melihat cara kerja fungsi ini, lihat car-ui-lib Aplikasi referensi Paintbooth. Contoh:

Tata letak preferensi UI mobil

Gambar 1. Tata letak preferensi UI mobil.

Jenis preferensi yang tersedia

Bagian ini menjelaskan jenis preferensi UI Mobil.

PreferenceFragment

PreferenceFragment adalah subclass dari androidx.preference.PreferenceFragmentCompat dan merupakan class dasar yang harus digunakan klien. Selama panggilan ke setPreferenceScreen, kelas ini otomatis mengganti elemen dari androidx.preference dengan setara yang tersedia dari elemen 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

Ini adalah CarUi yang setara dengan class androidx.preference.Preference yang mendukung atribut berikut, yang dapat disesuaikan menggunakan runtime resource overlay (RRO). Semua elemen CarUi lainnya yang juga menggunakan varian gaya CarUiPreference mendukung atribut berikut.

<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>

Berikut adalah gaya dasar untuk com.android.car.ui.preference, yang memperluas tema androidx.Preference. Drawable chevron ditentukan di 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 ditentukan di 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>

Jika tata letak dalam gaya di atas sedang di-overlay, klien harus memastikan tata letak baru setidaknya menyediakan ID yang diharapkan oleh Class androidx. Hal ini juga berlaku untuk elemen lain yang menggunakan gaya dasar ini.

CarUiDropDownPreference

Ini adalah CarUi yang setara dengan androidx.preference.DropDownPreference dan menggunakan gaya berikut:

<style name="Preference.CarUi.DropDown">
        <item name="android:layout">@layout/car_ui_preference_dropdown</item>
</style>

CarUiRadioButtonPreference

Subclass dari androidx.preference.TwoStatePreference ini meng-inflate tata letak car_ui_radio_button_preference_widget selama inisialisasi. Jika tata letak ini dihamparkan dalam RRO, tata letak baru harus berisi elemen jenis android.widget.RadioButton, dengan id R.id.radio_button serta harus berisi elemen dan ID lain yang diperlukan oleh class dasar.

CarUiSwitchPreference

Ini adalah CarUi yang setara dengan class androidx.preference.SwitchPreference. Perbedaannya adalah saat elemen ini tidak diaktifkan, pesan toast akan ditampilkan. Roti panggang dapat disesuaikan dengan memanggil setMessageToShowWhenDisabledPreferenceClicked metode di Android 10 dan Android 11. Elemen ini menggunakan gaya berikut:

<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

Subclass CarUiPreference yang mengaktifkan tindakan sekunder. Dari atribut yang dapat digunakan untuk menyesuaikan elemen ini diberikan di bawah ini:

<declare-styleable name="CarUiTwoActionPreference">
        <!-- Determines if the secondary action is initially shown -->
        <attr name="actionShown" format="boolean"/>
</declare-styleable>

Elemen ini menggunakan gaya yang sama dengan class dasar dan memerlukan R.id.action_widget_container dan android.R.id.widget_frame.

CarUiDialogFragment

Kelas ini dipinjam sebagaimana adanya dari androidx.preference.PreferenceDialogFragmentCompat dengan beberapa tambahan khusus untuk CarUi. Klien harus menggunakan subclass dari class ini untuk menyajikan platform bertema AlertDialog.

PreferenceDialogFragment

Subclass langsung dari CarUiDialogFragment . Klien harus membuat subclass dari class ini untuk menyajikan platform bertema apa pun AlertDialog.

CarUiEditTextPreference

Ini adalah CarUi yang setara dengan androidx.preference.EditTextPreference :

<style name="Preference.CarUi.DialogPreference.EditTextPreference">
        <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item>
</style>

Jika tata letak dalam gaya di atas sedang di-overlay, klien harus memastikan tata letak yang baru memberikan ID yang diharapkan oleh class androidx.preference.EditTextPreference.

EditTextPreferenceDialogFragment

Subclass langsung dari PreferenceDialogFragment. Serta, CarUi yang setara dengan class androidx.preference.PreferenceDialogFragments. Klien seharusnya Gunakan class ini untuk mempresentasikan AlertDialog platform bertema apa pun.

CarUiSeekBarDialogPreference

Implementasi class androidx.preference.DialogPreference, yang menyediakan SeekBar fungsionalitas:

<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

Fragmen yang menyediakan tata letak dengan SeekBar dalam dialog.

CarUiListPreference

CarUi setara dengan class androidx.preference.ListPreference.

ListPreferenceFragment

Fragmen yang menyediakan tata letak dengan androidx.preference.ListPreference di dalamnya.

CarUiMultiSelectListPreference

Setara CarUi dengan class androidx.preference.Preference.

MultiSelectListPreferenceFragment

Fragmen yang menyediakan tata letak dengan com.android.car.ui.CarUiMultiSelectListPreference di dalamnya.