Halaman ini menjelaskan cara menggunakan dan menyesuaikan elemen dalam
paket com.android.car.ui.preference, yang mencakup elemen UI
yang dapat digunakan untuk menampilkan preferensi untuk aplikasi.
Sebagian besar elemen adalah subclass class com.androidx.preference tempat Anda menambahkan
penyesuaian CarUi. Pada umumnya, Anda dapat menggunakan elemen dalam
paket com.android.car.ui.preferences dengan menggunakan
com.android.car.PreferenceFragment. PreferenceFragment mengganti semua
elemen androidx.preference dengan elemen yang setara di
car.ui.preferences. Untuk melihat cara kerja fungsi ini, lihat aplikasi referensi car-ui-lib
Paintbooth. Misalnya:

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, class ini
akan otomatis mengganti elemen dari androidx.preference dengan
elemen yang setara dari elemen car.ui.preference yang tersedia.
<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 overlay resource runtime (RRO).
Semua elemen CarUi lainnya yang menggunakan varian gaya CarUiPreference juga
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 ditempatkan, klien harus memastikan
tata letak baru setidaknya memberikan ID yang diharapkan oleh class
androidx yang sesuai. Hal ini juga berlaku untuk elemen lain yang menggunakan
gaya dasar ini.
CarUiDropDownPreference
Ini adalah CarUi yang setara dengan class
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 androidx.preference.TwoStatePreference ini
meng-inflate tata letak car_ui_radio_button_preference_widget selama
inisialisasi. Jika tata letak ini ditempatkan di RRO, tata letak baru harus
berisi elemen jenis android.widget.RadioButton, dengan ID
R.id.radio_button dan juga harus berisi elemen dan ID lain
yang diperlukan oleh class dasar.
CarUiSwitchPreference
Ini adalah CarUi yang setara dengan class androidx.preference.SwitchPreference.
Perbedaannya adalah jika elemen ini tidak diaktifkan, pesan toast akan ditampilkan. Pesan
toast dapat disesuaikan dengan memanggil
metode setMessageToShowWhenDisabledPreferenceClicked 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 memungkinkan tindakan sekunder. Atribut
yang dapat digunakan untuk menyesuaikan elemen ini diberikan di bawah:
<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
Class ini dipinjam apa adanya dari
androidx.preference.PreferenceDialogFragmentCompat dengan beberapa tambahan
khusus untuk CarUi. Klien harus menggunakan subclass class ini untuk menampilkan
AlertDialog platform bertema.
PreferenceDialogFragment
Subclass langsung dari CarUiDialogFragment . Klien harus membuat subclass class ini
untuk menampilkan AlertDialog platform bertema apa pun.
CarUiEditTextPreference
Ini adalah CarUi yang setara dengan class
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 ditempatkan, klien harus memastikan tata letak baru
menyediakan ID yang diharapkan oleh class androidx.preference.EditTextPreference.
EditTextPreferenceDialogFragment
Subclass langsung dari PreferenceDialogFragment. Selain itu, CarUi setara dengan
class androidx.preference.PreferenceDialogFragments. Klien harus
menggunakan class ini untuk menampilkan AlertDialog platform bertema apa pun.
CarUiSeekBarDialogPreference
Implementasi class androidx.preference.DialogPreference,
yang menyediakan
fungsi
SeekBar:
<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 yang setara dengan class androidx.preference.ListPreference.
ListPreferenceFragment
Fragmen yang menyediakan tata letak dengan
androidx.preference.ListPreference di dalamnya.
CarUiMultiSelectListPreference
CarUi yang setara dengan class androidx.preference.Preference.
MultiSelectListPreferenceFragment
Fragmen yang menyediakan tata letak dengan
com.android.car.ui.CarUiMultiSelectListPreference di dalamnya.