Personalizzazione delle preferenze UI dell'auto

Questa pagina descrive come utilizzare e personalizzare gli elementi del pacchetto com.android.car.ui.preference, che include elementi dell'interfaccia utente che possono essere utilizzati per presentare le preferenze per le app.

La maggior parte degli elementi è una sottoclasse delle classi com.androidx.preference a cui aggiungi le personalizzazioni di CarUi. Nella maggior parte dei casi, puoi utilizzare gli elementi del com.android.car.ui.preferences package utilizzando com.android.car.PreferenceFragment. PreferenceFragment sostituisce tutti gli elementi androidx.preference con i relativi equivalenti in car.ui.preferences. Per visualizzare queste funzionalità in azione, consulta l'app di riferimento Paintbooth della libreria car-ui-lib. Ad esempio:

Layout delle preferenze dell'interfaccia utente dell'auto

Figura 1. Layout delle preferenze dell'interfaccia utente dell'auto.

Tipi di preferenze disponibili

Questa sezione descrive i tipi di preferenze dell'interfaccia utente dell'auto.

PreferenceFragment

PreferenceFragment è una sottoclasse di androidx.preference.PreferenceFragmentCompat ed è la classe di base che i client devono utilizzare. Durante una chiamata a setPreferenceScreen, questa classe sostituisce automaticamente gli elementi di androidx.preference con gli equivalenti disponibili degli elementi di 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

Si tratta dell'equivalente di CarUi della classe androidx.preference.Preference che supporta i seguenti attributi, che possono essere personalizzati utilizzando un overlay delle risorse di runtime (RRO). Tutti gli altri elementi CarUi che utilizzano una variante dello stile CarUiPreference supportano anche 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 estende il tema androidx.Preference. L'elemento 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>

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 client devono assicurarsi che il nuovo layout fornisca almeno gli ID previsti dalle classi androidx corrispondenti. Questo vale anche per gli altri elementi che utilizzano questo stile di base.

CarUiDropDownPreference

Si tratta dell'equivalente CarUi della classe androidx.preference.DropDownPreference e utilizza il seguente stile:

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

CarUiRadioButtonPreference

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

CarUiSwitchPreference

Questo è l'equivalente CarUi della classe androidx.preference.SwitchPreference. La differenza è che, quando questo elemento non è attivato, viene visualizzato un messaggio popup. Il messaggio di вс вс può essere personalizzato chiamando il 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>

CarUiTwoActionPreference

Una sottoclasse di CarUiPreference che attiva un'azione secondaria. Di seguito sono riportati gli attributi che possono essere utilizzati per personalizzare questo elemento:

<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 di base e richiede R.id.action_widget_container e android.R.id.widget_frame.

CarUiDialogFragment

Questo corso è preso così com'è da androidx.preference.PreferenceDialogFragmentCompat con alcune aggiunte specifiche per CarUi. I clienti devono utilizzare sottoclassi di questa classe per presentare la piattaforma a tema AlertDialog.

PreferenceDialogFragment

Una sottoclasse diretta di CarUiDialogFragment . I client devono sottoclassificare questa classe per presentare qualsiasi piattaforma a tema AlertDialog.

CarUiEditTextPreference

Questo è l'equivalente CarUi della classe androidx.preference.EditTextPreference:

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

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

EditTextPreferenceDialogFragment

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

CarUiSeekBarDialogPreference

Un'implementazione della classe androidx.preference.DialogPreference, che fornisce la funzionalità di 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 frammento che fornisce un layout con una barra di scorrimento in una finestra di dialogo.

CarUiListPreference

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

ListPreferenceFragment

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

CarUiMultiSelectListPreference

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

MultiSelectListPreferenceFragment

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