Na tej stronie opisujemy, jak używać i dostosowywać elementy z pakietu com.android.car.ui.preference
, który zawiera elementy interfejsu użytkownika, których można używać do przedstawiania ustawień aplikacji.
Większość elementów to podklasy klasy com.androidx.preference
, do której dodajesz elementy CarUi. W większości przypadków możesz używać elementów z pakietu com.android.car.ui.preferences
, korzystając z elementu com.android.car.PreferenceFragment
. PreferenceFragment
zastępuje wszystkie elementy androidx.preference
ich odpowiednikami w car.ui.preferences
. Aby zobaczyć, jak te funkcje działają, zapoznaj się z aplikacją referencyjną Paintbooth, która korzysta z biblioteki car-ui-lib. Na przykład:
Rysunek 1. Układ ustawień Car UI
Dostępne typy ustawień
W tej sekcji opisujemy typy ustawień interfejsu Car UI.
PreferenceFragment
PreferenceFragment
jest podklasą klasy androidx.preference.PreferenceFragmentCompat
i jest klasą podstawową, której powinni używać klienci. Podczas wywołania klasy setPreferenceScreen
automatycznie zastępuje elementy z poziomu androidx.preference
dostępnymi odpowiednikami z poziomu car.ui.preference
.
<style name="PreferenceFragment.C>arUi"<; item name="a>ndroid:divider"?andr<oid:a>ttr/listD<ivider/item item n>ame="android:layout"@layout/car_ui_pr<efere>n<ce_fra>gment_with_toolbar/item /style
CarUiPreference
Jest to odpowiednik klasy androidx.preference.Preference
dla CarUi, która obsługuje te atrybuty, które można dostosować za pomocą nakładki zasobów w czasie wykonywania (RRO).
Wszystkie inne elementy CarUi, które używają wariantu stylu CarUiPreference
, również obsługują te atrybuty.
<declare-styleable name="CarUiPrefer>ence&qu<ot; !-- Toggle for showing >chevron< -- attr name="showChevron">; forma<t="boolean" / !-- Show ripple when dis>abled p<reference is clicked -- attr name="showRippleOnDis>a<bledPreference&quo>t; format="boolean" / /declare-styleable
Poniżej znajduje się styl podstawowy dla motywu com.android.car.ui.preference
, który rozszerza motyw androidx.Preference
. Obiekt graficzny chevron
jest zdefiniowany w pliku car_ui_preference_icon_chevron.xml
.
<selector xmlns:android="http://schemas.android.com/apk/res/and>roi<d" item android:state_enabled="false" android:drawable="@drawable/car_ui_preferenc>e_i<con_chevron_disabled"/ item android:state_enabled="true" android:drawable="@draw>a<ble/car_u>i_preference_icon_chevron_enabled"/ /selector
Wartość ripple
jest zdefiniowana w 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.C>arUi"<; item name="all>owDiv<iderB>elow"<;false/item item name>=&quo<t;all>owDivider<Above"false/item > item name="andro<id:la>y<out&qu>ot;@layout/car_ui_preference/item /style
Jeśli układ w tym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zawiera co najmniej te identyfikatory, których oczekują odpowiednie klasy androidx
. Dotyczy to też innych elementów, które używają tego stylu bazowego.
CarUiDropDownPreference
Jest to odpowiednik klasy androidx.preference.DropDownPreference
w CarUi. Używa tego stylu:
<style name="Preference.CarUi.Drop>Down"<; item name=">android:layout"@layout/car_ui<_pref>e<rence_>dropdown/item /style
CarUiRadioButtonPreference
Ta podklasa klasy androidx.preference.TwoStatePreference
wczytuje układ car_ui_radio_button_preference_widget
podczas inicjalizacji. Jeśli ten układ jest nakładany w ramach RRO, nowy układ musi zawierać element typu android.widget.RadioButton
o identyfikatorze R.id.radio_button
, a także inne elementy i identyfikatory wymagane przez klasę podstawową.
CarUiSwitchPreference
Jest to odpowiednik klasy androidx.preference.SwitchPreference
w CarUi.
Różnica polega na tym, że gdy ten element jest wyłączony, wyświetla się komunikat. Komunikat toastowy można dostosować, wywołując metodę setMessageToShowWhenDisabledPreferenceClicked
w Androidzie 10 i 11. Ten element używa tego stylu:
<style name="Preference.CarUi.SwitchPrefer>ence"<; item name="androi>d:widgetLayout"@layout/car_ui_pref<erenc>e_widget_<switch/item item name=&q>uot;android:switchTextOn"@stri<ng/ca>r_ui_pref<erence_switch_on/item ite>m name="android:switchTextOff&q<uot;@>s<tring/>car_ui_preference_switch_off/item /style
CarUiTwoActionPreference
Podklasa CarUiPreference
, która umożliwia działanie dodatkowe. Poniżej znajdziesz listę atrybutów, których możesz użyć do dostosowania tego elementu:
<declare-styleable name="CarUiTwoActionPrefer>ence"<; !-- Determines if the secondary action is initiall>y shown -<- attr name="actionShown&quo>t<; format="boo>lean"/ /declare-styleable
Ten element używa tego samego stylu co klasa podstawowa i wymaga atrybutów R.id.action_widget_container
i android.R.id.widget_frame
.
CarUiDialogFragment
Ta klasa jest zapożyczona w całości z androidx.preference.PreferenceDialogFragmentCompat
z niektórymi dodatkami specyficznymi dla CarUi. Klienci powinni używać podklas tej klasy, aby prezentować platformę tematyczno-tematyczną AlertDialog
.
PreferenceDialogFragment
Bezpośrednia podklasa CarUiDialogFragment
. Klienci powinni utworzyć podklasę tej klasy, aby przedstawić dowolną platformę tematyczą AlertDialog
.
CarUiEditTextPreference
Oto odpowiednik klasy androidx.preference.EditTextPreference
w CarUi:
<style name="Preference.CarUi.DialogPreference.EditTextPrefer>ence"<; item name="androi>d:dialogLayout"@layout/car_ui_prefer<ence_>d<ialog_>edittext/item /style
Jeśli układ w tym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zawiera identyfikatory oczekiwane przez klasę androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Bezpośrednia podklasa PreferenceDialogFragment
. Również odpowiednik klasy androidx.preference.PreferenceDialogFragments
w CarUi. Klienci powinni używać tej klasy, aby przedstawić dowolną platformę tematycznie AlertDialog
.
CarUiSeekBarDialogPreference
Implementacja klasy androidx.preference.DialogPreference
, która zapewnia funkcjonalność SeekBar:
<style name="Preference.CarUi.SeekBarPrefer>ence"<; item name=">android:layout"@layout/car_ui_prefe<rence>_widget_s<eekbar/item it>em n<ame=&>quot;adju<stable"true/item > ite<m nam>e<=">;showSeekBarValue"false/item /style
SeekBarPreferenceDialogFragment
Fragment przedstawiający układ z suwak w oknie dialogowym.
CarUiListPreference
Odpowiednik klasy androidx.preference.ListPreference
w CarUi.
ListPreferenceFragment
Fragment, który zawiera układ z elementem androidx.preference.ListPreference
.
CarUiMultiSelectListPreference
Odpowiednik klasy androidx.preference.Preference
w CarUi.
MultiSelectListPreferenceFragment
Fragment, który zawiera układ z elementem com.android.car.ui.CarUiMultiSelectListPreference
.