Halaman ini menjelaskan cara menggunakan dan menyesuaikan elemen dalam paket com.android.car.ui.preference
, yang mencakup elemen UI yang dapat digunakan untuk menyajikan preferensi aplikasi.
Sebagian besar elemen merupakan subkelas kelas 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 elemen androidx.preference
dengan elemen setaranya di car.ui.preferences
. Untuk melihat fungsi ini dalam tindakan, 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.
Fragmen Preferensi
PreferenceFragment
adalah subkelas dari androidx.preference.PreferenceFragmentCompat
dan merupakan kelas dasar yang harus digunakan klien. Selama panggilan ke setPreferenceScreen
, kelas ini secara otomatis mengganti elemen dari androidx.preference
dengan elemen 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>
Preferensi CarUi
Ini adalah CarUi yang setara dengan kelas androidx.preference.Preference
yang mendukung atribut berikut, yang dapat dikustomisasi menggunakan runtime resource overlay (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 ini adalah gaya dasar untuk com.android.car.ui.preference
, yang memperluas tema androidx.Preference
. Sumber daya dapat digambar chevron
ditentukan dalam 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
didefinisikan dalam 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 dengan gaya di atas di-overlay, klien harus memastikan tata letak baru setidaknya menyediakan id yang diharapkan oleh kelas androidx
yang sesuai. Hal ini juga berlaku untuk elemen lain yang menggunakan gaya dasar ini.
Preferensi DropDown CarUi
Ini adalah CarUi yang setara dengan kelas androidx.preference.DropDownPreference
dan menggunakan gaya berikut:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
Preferensi Tombol CarUiRadio
Subkelas androidx.preference.TwoStatePreference
ini mengembangkan tata letak car_ui_radio_button_preference_widget
selama inisialisasi. Jika tata letak ini di-overlay dalam RRO, tata letak baru harus berisi elemen bertipe android.widget.RadioButton
, dengan id R.id.radio_button
dan juga harus berisi elemen dan id lain yang diperlukan oleh kelas dasar.
Preferensi CarUiSwitch
Ini setara dengan CarUi dari kelas androidx.preference.SwitchPreference
. Perbedaannya adalah ketika elemen ini tidak diaktifkan, pesan toast akan ditampilkan. Pesan toast dapat dikustomisasi 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>
Preferensi Aksi CarUiTwo
Subkelas CarUiPreference
yang memungkinkan tindakan sekunder. Atribut yang dapat digunakan untuk menyesuaikan elemen ini disediakan 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 kelas dasar dan memerlukan R.id.action_widget_container
, dan android.R.id.widget_frame
.
Fragmen Dialog MobilUi
Kelas ini dipinjam dari androidx.preference.PreferenceDialogFragmentCompat
dengan beberapa tambahan khusus untuk CarUi. Klien harus menggunakan subkelas dari kelas ini untuk menyajikan platform bertema AlertDialog
.
PreferensiDialogFragment
Subkelas langsung dari CarUiDialogFragment
. Klien harus membuat subkelas kelas ini untuk menyajikan platform bertema AlertDialog
.
CarUiEditTextPreference
Ini adalah CarUi yang setara dengan kelas androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Jika tata letak dengan gaya di atas di-overlay, klien harus memastikan tata letak baru menyediakan id yang diharapkan oleh kelas androidx.preference.EditTextPreference
.
EditTeksPreferensiDialogFragment
Subkelas langsung dari PreferenceDialogFragment
. Juga, CarUi yang setara dengan kelas androidx.preference.PreferenceDialogFragments
. Klien harus menggunakan kelas ini untuk menyajikan platform bertema AlertDialog
.
Preferensi CarUiSeekBarDialog
Implementasi kelas androidx.preference.DialogPreference
, yang menyediakan fungsionalitas 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
Sebuah fragmen yang menyediakan tata letak dengan SeekBar dalam dialog.
Preferensi CarUiList
CarUi setara dengan kelas androidx.preference.ListPreference
.
DaftarPreferenceFragment
Fragmen yang menyediakan tata letak dengan androidx.preference.ListPreference
di dalamnya.
Preferensi Daftar CarUiMultiSelect
Setara dengan CarUi dari kelas androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Sebuah fragmen yang menyediakan tata letak dengan com.android.car.ui.CarUiMultiSelectListPreference
di dalamnya.