Artikel ini menjelaskan cara menggunakan dan menyesuaikan elemen dalam paket com.android.car.ui.preference
, yang menyertakan elemen UI yang dapat digunakan untuk menyajikan preferensi aplikasi.
Sebagian besar elemen adalah 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 padanannya di car.ui.preferences
. Untuk melihat fungsionalitas ini dalam tindakan, lihat aplikasi referensi Paintbooth car-ui-lib. Sebagai contoh:
Gambar 1. Tata letak preferensi UI mobil.
Jenis Preferensi yang Tersedia
PreferensiFragmen
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 padanan 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 MobilUi
Ini adalah setara CarUi dari 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 untuk chevron
didefinisikan 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
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 dalam gaya di atas sedang dilapis, klien perlu memastikan tata letak baru setidaknya menyediakan id yang diharapkan oleh kelas androidx
yang sesuai. Ini juga berlaku untuk elemen lain yang menggunakan gaya dasar ini.
Preferensi MobilUiDropDown
Ini adalah setara CarUi dari 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 CarUiRadioButton
Subkelas androidx.preference.TwoStatePreference
ini mengembangkan tata letak car_ui_radio_button_preference_widget
selama inisialisasi. Jika tata letak ini dilapis 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 adalah setara CarUi dari kelas androidx.preference.SwitchPreference
. Perbedaannya adalah ketika 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>
Preferensi CarUiTwoAction
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 membutuhkan R.id.action_widget_container
, dan android.R.id.widget_frame
.
CarUiDialogFragment
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
.
PreferenceDialogFragment
Subkelas langsung dari CarUiDialogFragment
. Klien harus mensubklasifikasikan kelas ini untuk menampilkan platform bertema AlertDialog
.
CarUiEditTextPreference
Ini adalah padanan CarUi dari 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 dalam gaya di atas sedang dilapis, klien perlu memastikan tata letak baru menyediakan id yang diharapkan oleh kelas androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Subkelas langsung dari PreferenceDialogFragment
. Juga, CarUi setara dengan kelas androidx.preference.PreferenceDialogFragments
. Klien harus menggunakan kelas ini untuk menyajikan platform bertema AlertDialog
.
CarUiSeekBarDialogPreference
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
Fragmen yang menyediakan tata letak dengan SeekBar dalam dialog.
Preferensi Daftar Mobil
CarUi setara dengan kelas androidx.preference.ListPreference
.
DaftarPreferenceFragment
Fragmen yang menyediakan tata letak dengan androidx.preference.ListPreference
di dalamnya.
CarUiMultiSelectListPreference
Setara CarUi dari kelas androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Fragmen yang menyediakan tata letak dengan com.android.car.ui.CarUiMultiSelectListPreference
di dalamnya.