Na tej stronie opisano, jak używać i dostosowywać elementy pakietu com.android.car.ui.preference
, który zawiera elementy interfejsu użytkownika, których można używać do prezentowania preferencji aplikacji.
Większość elementów stanowi podklasę klas com.androidx.preference
, do których można dodać dostosowania CarUi. W większości przypadków elementów pakietu com.android.car.ui.preferences
można używać za pomocą com.android.car.PreferenceFragment
. PreferenceFragment
zastępuje wszystkie elementy androidx.preference
ich odpowiednikami w car.ui.preferences
. Aby zobaczyć te funkcje w działaniu, zobacz aplikację referencyjną car-ui-lib Paintbooth. Na przykład:
Rysunek 1. Układ preferencji interfejsu samochodu.
Dostępne typy preferencji
W tej sekcji opisano typy preferencji interfejsu samochodu.
Fragment preferencji
PreferenceFragment
jest podklasą androidx.preference.PreferenceFragmentCompat
i jest klasą bazową, której powinni używać klienci. Podczas wywołania metody setPreferenceScreen
ta klasa automatycznie zastępuje elementy z androidx.preference
dostępnym odpowiednikiem z elementów 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>
Preferencje CarUi
Jest to odpowiednik klasy androidx.preference.Preference
w CarUi, który obsługuje następujące atrybuty, które można dostosować za pomocą nakładki zasobów środowiska wykonawczego (RRO). Wszystkie inne elementy CarUi korzystające z wariantu stylu CarUiPreference
obsługują również następujące atrybuty.
<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>
Poniżej znajduje się podstawowy styl com.android.car.ui.preference
, który stanowi rozszerzenie motywu androidx.Preference
. Możliwość narysowania chevron
jest zdefiniowana w 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
jest zdefiniowane 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.CarUi"> <item name="allowDividerBelow">false</item> <item name="allowDividerAbove">false</item> <item name="android:layout">@layout/car_ui_preference</item> </style>
Jeśli układ w powyższym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zapewnia przynajmniej identyfikatory oczekiwane przez odpowiednie klasy androidx
. Dotyczy to również innych elementów korzystających z tego stylu podstawowego.
Preferencje CarUiDropDown
Jest to odpowiednik klasy androidx.preference.DropDownPreference
w CarUi i wykorzystuje następujący styl:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
Preferencje CarUiRadioButton
Ta podklasa androidx.preference.TwoStatePreference
powiększa układ car_ui_radio_button_preference_widget
podczas inicjalizacji. Jeśli ten układ jest nakładany w RRO, nowy układ musi zawierać element typu android.widget.RadioButton
o identyfikatorze R.id.radio_button
i musi także zawierać inne elementy i identyfikatory wymagane przez klasę bazową.
Preferencje CarUiSwitch
Jest to odpowiednik klasy androidx.preference.SwitchPreference
w CarUi. Różnica polega na tym, że gdy ten element nie jest włączony, wyświetlany jest komunikat toastowy. Komunikat toastowy można dostosować, wywołując metodę setMessageToShowWhenDisabledPreferenceClicked
w systemach Android 10 i Android 11. Ten element wykorzystuje następujący styl:
<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>
Preferencje CarUiTwoAction
Podklasa CarUiPreference
, która umożliwia wykonanie akcji dodatkowej. Poniżej przedstawiono atrybuty, których można użyć do dostosowania tego elementu:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Ten element używa tego samego stylu co klasa bazowa i wymaga R.id.action_widget_container
i android.R.id.widget_frame
.
Fragment CarUiDialog
Ta klasa została zapożyczona z androidx.preference.PreferenceDialogFragmentCompat
z pewnymi dodatkami specyficznymi dla CarUi. Klienci powinni używać podklas tej klasy, aby zaprezentować platformę tematyczną AlertDialog
.
Fragment Dialogu Preferencji
Bezpośrednia podklasa CarUiDialogFragment
. Klienci powinni podklasować tę klasę, aby prezentować dowolną platformę tematyczną AlertDialog
.
Preferencje CarUiEditText
To jest odpowiednik CarUi klasy androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Jeśli układ w powyższym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zapewnia identyfikatory oczekiwane przez klasę androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Bezpośrednia podklasa PreferenceDialogFragment
. Ponadto odpowiednik CarUi klasy androidx.preference.PreferenceDialogFragments
. Klienci powinni używać tej klasy do prezentowania dowolnej platformy tematycznej AlertDialog
.
Preferencje CarUiSeekBarDialog
Implementacja klasy androidx.preference.DialogPreference
, która udostępnia funkcjonalność 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
Fragment udostępniający układ z SeekBar w oknie dialogowym.
Preferencje CarUiList
Odpowiednik CarUi klasy androidx.preference.ListPreference
.
Fragment listy preferencji
Fragment udostępniający układ zawierający androidx.preference.ListPreference
.
Preferencje CarUiMultiSelectList
Odpowiednik klasy CarUi klasy androidx.preference.Preference
.
Fragment MultiSelectListPreference
Fragment udostępniający układ zawierający com.android.car.ui.CarUiMultiSelectListPreference
.