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
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 saat 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 mengaktifkan 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 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.