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