Personnaliser les préférences d'UI de la voiture

Cette page explique comment utiliser et personnaliser les éléments des Package com.android.car.ui.preference, qui inclut des éléments d'interface utilisateur qui peuvent être utilisés pour présenter vos préférences pour les applications.

La plupart des éléments sous-classent les classes com.androidx.preference auxquelles vous ajoutez Personnalisations CarUi. Dans la plupart des cas, vous pouvez utiliser les éléments de la section le package com.android.car.ui.preferences à l'aide de com.android.car.PreferenceFragment Tout remplacer par PreferenceFragment Les éléments androidx.preference par leur équivalent dans car.ui.preferences Pour voir ces fonctionnalités en action, consultez le fichier car-ui-lib Application de référence Paintbooth. Par exemple:

Mise en page des préférences d'UI de la voiture

Figure 1 : Mise en page des préférences d'UI de la voiture.

Types de préférences disponibles

Cette section décrit les types de préférences d'UI de voiture.

PreferenceFragment

PreferenceFragment est une sous-classe de androidx.preference.PreferenceFragmentCompat. Il s'agit de la classe de base qui les clients doivent utiliser. Lors d'un appel à setPreferenceScreen, ce cours remplace automatiquement les éléments de androidx.preference par le équivalent disponible à partir 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>

CarUiPreference

Il s'agit de l'équivalent CarUi de la classe androidx.preference.Preference que 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 sont également acceptent 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>

Voici le style de base de com.android.car.ui.preference, qui s'étend le thème androidx.Preference. Le drawable chevron 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>

Le ripple est défini 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 la nouvelle mise en page fournit au moins les identifiants attendus par les androidx de classes. Cela s'applique également aux autres éléments qui utilisent ce style de base.

CarUiDropDownPreference

Il s'agit de l'équivalent CarUi de androidx.preference.DropDownPreference. et utilise le style suivant:

<style name="Preference.CarUi.DropDown">
        <item name="android:layout">@layout/car_ui_preference_dropdown</item>
</style>

CarUiRadioButtonPreference

Cette sous-classe de androidx.preference.TwoStatePreference gonfle la mise en page car_ui_radio_button_preference_widget pendant l'initialisation. Si cette mise en page est superposée dans une RRO, la nouvelle mise en page doit contient un élément de type android.widget.RadioButton, dont l'identifiant est R.id.radio_button et doit également contenir d'autres éléments et identifiants requises par la classe de base.

CarUiSwitchPreference

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 toast s'affiche. Le toast peut être personnalisé en appelant la méthode 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

Sous-classe de CarUiPreference qui active une action secondaire. La de qui peuvent ê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 en l'état à androidx.preference.PreferenceDialogFragmentCompat avec quelques ajouts spécifiques à CarUi. Les clients doivent utiliser des sous-classes de cette classe pour présenter la plate-forme thématique AlertDialog.

PreferenceDialogFragment

Une sous-classe directe de CarUiDialogFragment . Les clients doivent sous-classer cette classe pour présenter une plate-forme thématique AlertDialog.

CarUiEditTextPreference

Il s'agit de l'équivalent CarUi de androidx.preference.EditTextPreference. classe:

<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 ID attendus par la classe androidx.preference.EditTextPreference.

EditTextPreferenceDialogFragment

Une sous-classe directe de PreferenceDialogFragment. De plus, l'équivalent CarUi de la classe androidx.preference.PreferenceDialogFragments. Les clients doivent Utilisez cette classe pour présenter une plate-forme à thème AlertDialog.

CarUiSeekBarDialogPreference

Implémentation de la classe androidx.preference.DialogPreference. qui fournit Barre de recherche fonctionnalité:

<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 qui fournit une mise en page avec une barre de recherche dans une boîte de dialogue.

CarUiListPreference

Équivalent CarUi de la classe androidx.preference.ListPreference.

ListPreferenceFragment

Un fragment qui fournit une mise en page avec androidx.preference.ListPreference.

CarUiMultiSelectListPreference

L'équivalent CarUi de la classe androidx.preference.Preference.

MultiSelectListPreferenceFragment

Un fragment qui fournit une mise en page avec com.android.car.ui.CarUiMultiSelectListPreference.