Esta página describe cómo usar y personalizar elementos en el paquete com.android.car.ui.preference
, que incluye elementos de la interfaz de usuario que se pueden usar para presentar preferencias de aplicaciones.
La mayoría de los elementos son subclases de clases com.androidx.preference
a las que agrega personalizaciones de CarUi. En la mayoría de los casos, puedes usar los elementos del paquete com.android.car.ui.preferences
usando com.android.car.PreferenceFragment
. PreferenceFragment
reemplaza todos los elementos androidx.preference
con sus equivalentes en car.ui.preferences
. Para ver estas funcionalidades en acción, consulte la aplicación de referencia car-ui-lib Paintbooth. Por ejemplo:
Figura 1. Diseño de preferencias de la interfaz de usuario del automóvil.
Tipos de preferencias disponibles
Esta sección describe los tipos de preferencias de Car UI.
Fragmento de preferencia
PreferenceFragment
es una subclase de androidx.preference.PreferenceFragmentCompat
y es la clase base que los clientes deben usar. Durante una llamada a setPreferenceScreen
, esta clase reemplaza automáticamente los elementos de androidx.preference
con el equivalente disponible de los elementos 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>
Preferencia CarUi
Este es el equivalente CarUi de la clase androidx.preference.Preference
que admite los siguientes atributos, que se pueden personalizar mediante una superposición de recursos de tiempo de ejecución (RRO). Todos los demás elementos CarUi que utilizan una variante del estilo CarUiPreference
también admiten los siguientes atributos.
<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>
El siguiente es el estilo base para com.android.car.ui.preference
, que amplía el tema androidx.Preference
. El elemento de diseño chevron
se define en 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>
La ripple
se define en 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 el diseño en el estilo anterior se superpone, los clientes deben asegurarse de que el nuevo diseño proporcione al menos los identificadores esperados por las clases androidx
correspondientes. Esto también se aplica a los demás elementos que utilizan este estilo base.
Preferencia CarUiDropDown
Este es el equivalente CarUi de la clase androidx.preference.DropDownPreference
y utiliza el siguiente estilo:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButtonPreferencia
Esta subclase de androidx.preference.TwoStatePreference
infla el diseño car_ui_radio_button_preference_widget
durante la inicialización. Si este diseño se superpone en un RRO, el nuevo diseño debe contener un elemento de tipo android.widget.RadioButton
, con ID R.id.radio_button
y también debe contener otros elementos e ID requeridos por la clase base.
CarUiSwitchPreferencia
Este es el equivalente CarUi de la clase androidx.preference.SwitchPreference
. La diferencia es que cuando este elemento no está habilitado, se muestra un mensaje de brindis. El mensaje del brindis se puede personalizar llamando al método setMessageToShowWhenDisabledPreferenceClicked
en Android 10 y Android 11. Este elemento usa el siguiente estilo:
<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>
CarUiTwoActionPreferencia
Una subclase de CarUiPreference
que permite una acción secundaria. A continuación se proporcionan los atributos que se pueden utilizar para personalizar este elemento:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Este elemento usa el mismo estilo que la clase base y requiere R.id.action_widget_container
y android.R.id.widget_frame
.
CarUiDialogFragmento
Esta clase se toma prestada tal cual de androidx.preference.PreferenceDialogFragmentCompat
con algunas adiciones específicas de CarUi. Los clientes deben utilizar subclases de esta clase para presentar la plataforma temática AlertDialog
.
PreferenciaDialogFragment
Una subclase directa de CarUiDialogFragment
. Los clientes deben subclasificar esta clase para presentar cualquier plataforma temática AlertDialog
.
CarUiEditTextPreferencia
Este es el equivalente CarUi de la clase androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Si el diseño en el estilo anterior se superpone, los clientes deben asegurarse de que el nuevo diseño proporcione los identificadores esperados por la clase androidx.preference.EditTextPreference
.
EditarTextPreferenceDialogFragment
Una subclase directa de PreferenceDialogFragment
. Además, el equivalente CarUi de la clase androidx.preference.PreferenceDialogFragments
. Los clientes deben utilizar esta clase para presentar cualquier plataforma temática AlertDialog
.
CarUiSeekBarDialogPreferencia
Una implementación de la clase androidx.preference.DialogPreference
, que proporciona la funcionalidad 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 fragmento que proporciona un diseño con una barra de búsqueda en un cuadro de diálogo.
Preferencia CarUiList
CarUi equivalente de la clase androidx.preference.ListPreference
.
ListaPreferenciaFragmento
Un fragmento que proporciona un diseño con androidx.preference.ListPreference
.
Preferencia CarUiMultiSelectList
El equivalente CarUi de la clase androidx.preference.Preference
.
Fragmento de preferencia de lista de selección múltiple
Un fragmento que proporciona un diseño con com.android.car.ui.CarUiMultiSelectListPreference
.