Sesuaikan preferensi UI Mobil

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:

Tata letak preferensi UI mobil

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.