На этой странице описано, как использовать и настраивать элементы в пакете com.android.car.ui.preference
, который включает элементы пользовательского интерфейса, которые можно использовать для представления предпочтений для приложений.
Большинство элементов являются подклассами классов com.androidx.preference
, к которым вы добавляете настройки CarUi. В большинстве случаев вы можете использовать элементы пакета com.android.car.ui.preferences
, используя com.android.car.PreferenceFragment
. PreferenceFragment
заменяет все элементы androidx.preference
их эквивалентами в car.ui.preferences
. Чтобы увидеть эти функции в действии, см. справочное приложение car-ui-lib Paintbooth. Например:
Рисунок 1. Расположение предпочтений пользовательского интерфейса автомобиля.
Доступные типы предпочтений
В этом разделе описаны типы предпочтений автомобильного пользовательского интерфейса.
ПредпочтениеФрагмент
PreferenceFragment
— это подкласс androidx.preference.PreferenceFragmentCompat
и базовый класс, который должны использовать клиенты. Во время вызова setPreferenceScreen
этот класс автоматически заменяет элементы из androidx.preference
доступным эквивалентом из элементов 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>
АвтомобильUiPreference
Это эквивалент класса androidx.preference.Preference
в CarUi, который поддерживает следующие атрибуты, которые можно настроить с помощью наложения ресурсов времени выполнения (RRO). Все остальные элементы CarUi, использующие вариант стиля CarUiPreference
, также поддерживают следующие атрибуты.
<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>
Ниже приведен базовый стиль для com.android.car.ui.preference
, который расширяет тему androidx.Preference
. Рисуемый chevron
определен в 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
определяется в 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>
Если макет в стиле, указанном выше, накладывается, клиенты должны убедиться, что новый макет по крайней мере предоставляет идентификаторы, ожидаемые соответствующими классами androidx
. Это также относится и к другим элементам, использующим этот базовый стиль.
АвтомобильUiDropDownPreference
Это эквивалент класса androidx.preference.DropDownPreference
в CarUi, в котором используется следующий стиль:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
АвтомобильUIРадиоКнопкаПредпочтение
Этот подкласс androidx.preference.TwoStatePreference
раздувает макет car_ui_radio_button_preference_widget
во время инициализации. Если этот макет накладывается на RRO, новый макет должен содержать элемент типа android.widget.RadioButton
с идентификатором R.id.radio_button
, а также должен содержать другие элементы и идентификаторы, необходимые базовому классу.
АвтомобильUiSwitchPreference
Это эквивалент класса androidx.preference.SwitchPreference
в CarUi. Разница в том, что если этот элемент не включен, отображается всплывающее сообщение. Всплывающее сообщение можно настроить, вызвав метод setMessageToShowWhenDisabledPreferenceClicked
в Android 10 и Android 11. Этот элемент использует следующий стиль:
<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>
АвтомобильUITwoДействиеПредпочтение
Подкласс CarUiPreference
, который включает вторичное действие. Ниже приведены атрибуты, которые можно использовать для настройки этого элемента:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Этот элемент использует тот же стиль, что и базовый класс, и требует R.id.action_widget_container
и android.R.id.widget_frame
.
АвтомобильUIDialogФрагмент
Этот класс заимствован из androidx.preference.PreferenceDialogFragmentCompat
с некоторыми дополнениями, специфичными для CarUi. Клиенты должны использовать подклассы этого класса для представления тематической платформы AlertDialog
.
PreferenceDialogFragment
Прямой подкласс CarUiDialogFragment
. Клиенты должны создать подкласс этого класса, чтобы представить любую тематическую платформу AlertDialog
.
CarUIEditTextPreference
Это эквивалент класса androidx.preference.EditTextPreference
в CarUi:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Если макет в стиле, указанном выше, накладывается, клиентам необходимо убедиться, что новый макет предоставляет идентификаторы, ожидаемые классом androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Прямой подкласс PreferenceDialogFragment
. Кроме того, CarUi эквивалент класса androidx.preference.PreferenceDialogFragments
. Клиенты должны использовать этот класс для представления любой тематической платформы AlertDialog
.
CarUiSeekBarDialogPreference
Реализация класса androidx.preference.DialogPreference
, обеспечивающая функциональность 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
Фрагмент, предоставляющий макет с помощью SeekBar в диалоговом окне.
CarUiListPreference
CarUi эквивалент класса androidx.preference.ListPreference
.
ListPreferenceFragment
Фрагмент, предоставляющий макет с androidx.preference.ListPreference
.
CarUiMultiSelectListPreference
Эквивалент класса androidx.preference.Preference
в CarUi.
MultiSelectListPreferenceFragment
Фрагмент, предоставляющий макет с com.android.car.ui.CarUiMultiSelectListPreference
.