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.CarUi"> <item name="android:divider">?android:attr/listDivider</item> <item name="android:layout">@layout/car_ui_preference_fragment_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="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ę 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/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>
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.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 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.DropDown"> <item name="android:layout">@layout/car_ui_preference_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.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
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="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 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.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_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.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 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.