Personalizzazione delle preferenze UI dell'auto

In questa pagina viene descritto come utilizzare e personalizzare gli elementi in Pacchetto com.android.car.ui.preference, che include elementi UI che possono essere usate per presentare le preferenze per le app.

La maggior parte degli elementi crea sottoclassi com.androidx.preference classi a cui aggiungi Personalizzazioni CarUi. Nella maggior parte dei casi, puoi utilizzare gli elementi nel com.android.car.ui.preferences pacchetto utilizzando com.android.car.PreferenceFragment. PreferenceFragment sostituisce tutti androidx.preference elementi con i loro equivalenti in car.ui.preferences. Per vedere queste funzionalità in azione, visita il sito car-ui-lib App di riferimento Paintbooth. Ad esempio:

Layout preferenze UI auto

Figura 1. Layout preferenze UI auto.

Tipi di preferenze disponibili

Questa sezione descrive i tipi di preferenze UI auto.

Frammentopreferenza

PreferenceFragment è una sottoclasse di androidx.preference.PreferenceFragmentCompat ed è la classe base che che i clienti dovrebbero usare. Durante una chiamata al numero setPreferenceScreen, questo corso sostituisce automaticamente gli elementi di androidx.preference con equivalente disponibile da elementi 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>

Preferenza per le auto

Questo è l'equivalente CarUi della classe androidx.preference.Preference che supporta i seguenti attributi, che possono essere personalizzati utilizzando un overlay di risorse di runtime (RRO). Anche tutti gli altri elementi CarUi che utilizzano una variante dello stile CarUiPreference supportano i seguenti attributi.

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

Di seguito è riportato lo stile di base per com.android.car.ui.preference, che si estende tema androidx.Preference. Il drawable chevron è definito in 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>

Il parametro ripple è definito in 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>

Se il layout nello stile sopra riportato viene sovrapposto, i clienti devono assicurarsi il nuovo layout fornisce almeno gli ID previsti dalle androidx corso. Questo vale anche per gli altri elementi che utilizzano questo stile di base.

Preferenza per il menu a discesa CarUi

È l'equivalente CarUi di androidx.preference.DropDownPreference e utilizza il seguente stile:

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

Preferenze pulsantiautoradio

Questa sottoclasse di androidx.preference.TwoStatePreference gonfia il layout car_ui_radio_button_preference_widget durante durante l'inizializzazione. Se questo layout viene sovrapposto in un RRO, il nuovo layout deve contiene un elemento di tipo android.widget.RadioButton, con ID R.id.radio_button e deve contenere anche altri elementi e ID richiesto dalla classe base.

Preferenze switch CarUi

È l'equivalente CarUi della classe androidx.preference.SwitchPreference. La differenza è che quando questo elemento non è abilitato, viene visualizzato un messaggio toast. Il toast il messaggio può essere personalizzato richiamando Metodo setMessageToShowWhenDisabledPreferenceClicked in Android 10 e Android 11. Questo elemento utilizza il seguente stile:

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

Preferenza-azione-azione

Una sottoclasse di CarUiPreference che abilita un'azione secondaria. Il di che possono essere utilizzati per personalizzare questo elemento sono forniti di seguito:

<declare-styleable name="CarUiTwoActionPreference">
        <!-- Determines if the secondary action is initially shown -->
        <attr name="actionShown" format="boolean"/>
</declare-styleable>

Questo elemento utilizza lo stesso stile della classe base e richiede R.id.action_widget_container e android.R.id.widget_frame.

Frammento CarUiDialog

Questo corso è stato preso in prestito così com'è da androidx.preference.PreferenceDialogFragmentCompat con alcune aggiunte specifici di CarUi. I client devono utilizzare le sottoclassi di questa classe per presentare piattaforma a tema AlertDialog.

Frammento della finestra di dialogo delle preferenze

Una sottoclasse diretta di CarUiDialogFragment . I clienti devono creare una sottoclasse per presentare qualsiasi piattaforma a tema AlertDialog.

PreferenzeModificatestoCarUi

È l'equivalente CarUi di androidx.preference.EditTextPreference classe:

<style name="Preference.CarUi.DialogPreference.EditTextPreference">
        <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item>
</style>

Se il layout nello stile sopra viene sovrapposto, i clienti devono assicurarsi che il nuovo layout fornisce gli ID previsti dalla classe androidx.preference.EditTextPreference.

ModificaTextPreferenceDialogFragment

Una sottoclasse diretta di PreferenceDialogFragment. Inoltre, l'equivalente CarUi di la classe androidx.preference.PreferenceDialogFragments. I clienti devono usa questo corso per presentare qualsiasi piattaforma a tema AlertDialog.

Preferenza per la finestra di dialogo di ricerca per l'auto

Un'implementazione della classe androidx.preference.DialogPreference, che fornisce SeekBar funzionalità:

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

Frammento del dialogo delle preferenze della barra di ricerca

Un frammento che fornisce un layout con una barra SeekBar in una finestra di dialogo.

PreferenzaListaCarUi

Equivalente CarUi della classe androidx.preference.ListPreference.

ElencoPreferenceFragment

Un frammento che fornisce un layout con androidx.preference.ListPreference.

CarUiMultiSelectListPreference

L'equivalente CarUi della classe androidx.preference.Preference.

Selezione Multi-ElencoPreferenceFragment

Un frammento che fornisce un layout con com.android.car.ui.CarUiMultiSelectListPreference.