Настройте параметры пользовательского интерфейса автомобиля

На этой странице описывается, как использовать и настраивать элементы в пакете 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.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

АвтомобильUiPreference

Это эквивалент класса androidx.preference.Preference в CarUi, который поддерживает следующие атрибуты, которые можно настроить с помощью наложения ресурсов времени выполнения (RRO). Все остальные элементы CarUi, использующие вариант стиля CarUiPreference , также поддерживают следующие атрибуты.

<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

Ниже приведен базовый стиль для com.android.car.ui.preference , который расширяет тему androidx.Preference . Рисуемый chevron определен в 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

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.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

Если макет в стиле, указанном выше, накладывается, клиентам необходимо убедиться, что новый макет по крайней мере предоставляет идентификаторы, ожидаемые соответствующими классами androidx . Это также относится и к другим элементам, использующим этот базовый стиль.

АвтомобильUiDropDownPreference

Это эквивалент класса androidx.preference.DropDownPreference в CarUi, в котором используется следующий стиль:

<style name="Preference.CarUi.Drop>Down"<;
        item name=">android:layout"@layout/car_ui<_pref>e<rence_>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.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

АвтомобильUITwoДействиеПредпочтение

Подкласс CarUiPreference , который включает вторичное действие. Ниже приведены атрибуты, которые можно использовать для настройки этого элемента:

<declare-styleable name="CarUiTwoActionPrefer>ence"<;
        !-- Determines if the secondary action is initiall>y shown -<-
        attr name="actionShown&quo>t<; format="boo>lean"/
/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.EditTextPrefer>ence"<;
        item name="androi>d:dialogLayout"@layout/car_ui_prefer<ence_>d<ialog_>edittext/item
/style

Если макет в стиле, указанном выше, накладывается, клиентам необходимо убедиться, что новый макет предоставляет идентификаторы, ожидаемые классом androidx.preference.EditTextPreference .

EditTextPreferenceDialogFragment

Прямой подкласс PreferenceDialogFragment . Кроме того, CarUi эквивалент класса androidx.preference.PreferenceDialogFragments . Клиенты должны использовать этот класс для представления любой тематической платформы AlertDialog .

CarUiSeekBarDialogPreference

Реализация класса androidx.preference.DialogPreference , обеспечивающая функциональность 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

Фрагмент, предоставляющий макет с помощью SeekBar в диалоговом окне.

CarUiListPreference

CarUi эквивалент класса androidx.preference.ListPreference .

ListPreferenceFragment

Фрагмент, предоставляющий макет с androidx.preference.ListPreference .

CarUIMultiSelectListPreference

Эквивалент класса androidx.preference.Preference в CarUi.

MultiSelectListPreferenceFragment

Фрагмент, предоставляющий макет с com.android.car.ui.CarUiMultiSelectListPreference .