Cette page décrit comment utiliser et personnaliser les éléments du package com.android.car.ui.preference
, qui comprend des éléments d'interface utilisateur pouvant être utilisés pour présenter les préférences des applications.
La plupart des éléments sont des sous-classes des classes com.androidx.preference
auxquelles vous ajoutez des personnalisations CarUi. Dans la plupart des cas, vous pouvez utiliser les éléments du package com.android.car.ui.preferences
en utilisant com.android.car.PreferenceFragment
. PreferenceFragment
remplace tous les éléments androidx.preference
par leurs équivalents dans car.ui.preferences
. Pour voir ces fonctionnalités en action, consultez l'application de référence car-ui-lib Paintbooth. Par exemple:
Figure 1. Disposition des préférences de l'interface utilisateur de la voiture.
Types de préférences disponibles
Cette section décrit les types de préférences de l'interface utilisateur de la voiture.
PréférenceFragment
PreferenceFragment
est une sous-classe de androidx.preference.PreferenceFragmentCompat
et est la classe de base que les clients doivent utiliser. Lors d'un appel à setPreferenceScreen
, cette classe remplace automatiquement les éléments de androidx.preference
par l'équivalent disponible des éléments 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>
CarUiPréférence
Il s'agit de l'équivalent CarUi de la classe androidx.preference.Preference
qui prend en charge les attributs suivants, qui peuvent être personnalisés à l'aide d'une superposition de ressources d'exécution (RRO). Tous les autres éléments CarUi qui utilisent une variante du style CarUiPreference
prennent également en charge les attributs suivants.
<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>
Ce qui suit est le style de base pour com.android.car.ui.preference
, qui étend le thème androidx.Preference
. Le chevron
dessinable est défini dans 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>
L' ripple
est définie dans 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>
Si la mise en page dans le style ci-dessus est superposée, les clients doivent s'assurer que la nouvelle mise en page fournit au moins les identifiants attendus par les classes androidx
correspondantes. Cela s'applique également aux autres éléments qui utilisent ce style de base.
CarUiDropDownPréférence
Il s'agit de l'équivalent CarUi de la classe androidx.preference.DropDownPreference
et utilise le style suivant :
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButtonPréférence
Cette sous-classe de androidx.preference.TwoStatePreference
gonfle la disposition car_ui_radio_button_preference_widget
lors de l'initialisation. Si cette mise en page est superposée dans un RRO, la nouvelle mise en page doit contenir un élément de type android.widget.RadioButton
, avec l'identifiant R.id.radio_button
et doit également contenir d'autres éléments et identifiants requis par la classe de base.
CarUiSwitchPréférence
Il s'agit de l'équivalent CarUi de la classe androidx.preference.SwitchPreference
. La différence est que lorsque cet élément n'est pas activé, un message toast s'affiche. Le message toast peut être personnalisé en appelant la méthode setMessageToShowWhenDisabledPreferenceClicked
dans Android 10 et Android 11. Cet élément utilise le style suivant :
<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>
CarUiTwoActionPréférence
Une sous-classe de CarUiPreference
qui permet une action secondaire. Les attributs pouvant être utilisés pour personnaliser cet élément sont fournis ci-dessous :
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Cet élément utilise le même style que la classe de base et nécessite R.id.action_widget_container
et android.R.id.widget_frame
.
CarUiDialogFragment
Cette classe est empruntée telle quelle à androidx.preference.PreferenceDialogFragmentCompat
avec quelques ajouts spécifiques à CarUi. Les clients doivent utiliser des sous-classes de cette classe pour présenter la plateforme thématique AlertDialog
.
PréférenceDialogFragment
Une sous-classe directe de CarUiDialogFragment
. Les clients doivent sous-classer cette classe pour présenter n’importe quelle plateforme thématique AlertDialog
.
CarUiEditTextPréférence
Il s'agit de l'équivalent CarUi de la classe androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Si la mise en page dans le style ci-dessus est superposée, les clients doivent s'assurer que la nouvelle mise en page fournit les identifiants attendus par la classe androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Une sous-classe directe de PreferenceDialogFragment
. Également l'équivalent CarUi de la classe androidx.preference.PreferenceDialogFragments
. Les clients doivent utiliser cette classe pour présenter n'importe quelle plateforme thématique AlertDialog
.
CarUiSeekBarDialogPréférence
Une implémentation de la classe androidx.preference.DialogPreference
, qui fournit la fonctionnalité 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
Un fragment qui fournit une mise en page avec une SeekBar dans une boîte de dialogue.
CarUiListPréférence
Équivalent CarUi de la classe androidx.preference.ListPreference
.
ListePréférenceFragment
Un fragment qui fournit une mise en page contenant androidx.preference.ListPreference
.
CarUiMultiSelectListPréférence
L'équivalent CarUi de la classe androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Un fragment qui fournit une mise en page contenant com.android.car.ui.CarUiMultiSelectListPreference
.