Questa pagina descrive come utilizzare e personalizzare gli elementi nel 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 sono sottoclassi di classi com.androidx.preference
a cui aggiungi le personalizzazioni CarUi. Nella maggior parte dei casi, puoi utilizzare gli elementi nel pacchetto com.android.car.ui.preferences
utilizzando com.android.car.PreferenceFragment
. PreferenceFragment
sostituisce tutti gli elementi androidx.preference
con i loro equivalenti in car.ui.preferences
. Per visualizzare queste funzionalità in azione, consulta l'app di riferimento car-ui-lib Paintbooth. Per esempio:
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 base che i client dovrebbero utilizzare. Durante una chiamata a setPreferenceScreen
, questa classe sostituisce automaticamente gli elementi di androidx.preference
con l'equivalente disponibile degli 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>
CarUiPreference
Questo è l'equivalente CarUi della classe androidx.preference.Preference
che supporta i seguenti attributi, che possono essere personalizzati utilizzando un runtime Resource Overlay (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>
Quello che segue è lo stile di base per com.android.car.ui.preference
, che estende il tema androidx.Preference
. Il disegno 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>
L' ripple
è definita 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 precedente viene sovrapposto, i client devono assicurarsi che il nuovo layout fornisca almeno gli ID previsti dalle classi androidx
corrispondenti. Ciò vale anche per gli altri elementi che utilizzano questo stile di base.
Preferenza CarUiDropDown
Questo è l'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>
Preferenze CarUiRadioButton
Questa sottoclasse di androidx.preference.TwoStatePreference
gonfia il layout 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 base.
Preferenza CarUiSwitch
Questo è l'equivalente CarUi della classe androidx.preference.SwitchPreference
. La differenza è che quando questo elemento non è abilitato, viene mostrato un messaggio di avviso popup. Il messaggio di avviso popup 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 abilita 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 base e richiede R.id.action_widget_container
e android.R.id.widget_frame
.
CarUiDialogFragment
Questa classe è presa in prestito così com'è da androidx.preference.PreferenceDialogFragmentCompat
con alcune aggiunte specifiche per CarUi. I client dovrebbero utilizzare le sottoclassi di questa classe per presentare la piattaforma a tema AlertDialog
.
PreferenceDialogFragment
Una sottoclasse diretta di CarUiDialogFragment
. I client dovrebbero creare una sottoclasse di 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 client 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 client devono utilizzare questa classe per presentare qualsiasi piattaforma a tema AlertDialog
.
CarUiSeekBarDialogPreference
Un'implementazione della classe androidx.preference.DialogPreference
, che fornisce la funzionalità 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 SeekBar in una finestra di dialogo.
CarUiListPreference
Equivalente CarUi della classe androidx.preference.ListPreference
.
ListPreferenceFragment
Un frammento che fornisce un layout con androidx.preference.ListPreference
al suo interno.
CarUiMultiSelectListPreference
L'equivalente CarUi della classe androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Un frammento che fornisce un layout con com.android.car.ui.CarUiMultiSelectListPreference
al suo interno.