Este artigo descreve como usar e personalizar elementos no pacote com.android.car.ui.preference
, que inclui elementos de interface do usuário que podem ser usados para apresentar preferências para aplicativos.
A maioria dos elementos são subclasses de classes com.androidx.preference
às quais você adiciona personalizações CarUi. Na maioria dos casos, você pode usar os elementos no pacote com.android.car.ui.preferences
usando com.android.car.PreferenceFragment
. PreferenceFragment
substitui todos os elementos androidx.preference
por seus equivalentes em car.ui.preferences
. Para ver essas funcionalidades em ação, consulte o aplicativo de referência car-ui-lib Paintbooth. Por exemplo:
Figura 1. Layout de preferência da interface do usuário do carro.
Tipos de preferência disponíveis
PreferenceFragment
PreferenceFragment
é uma subclasse de androidx.preference.PreferenceFragmentCompat
e é a classe base que os clientes devem usar. Durante uma chamada para setPreferenceScreen
, essa classe substitui automaticamente os elementos de androidx.preference
pelo equivalente disponível dos 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>
CarUiPreference
Este é o equivalente CarUi da classe androidx.preference.Preference
que suporta os atributos a seguir, que podem ser personalizados usando um Runtime Resource Overlay (RRO). Todos os outros elementos CarUi que usam uma variante do estilo CarUiPreference
também suportam os seguintes 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>
Veja a seguir o estilo base para com.android.car.ui.preference
, que estende o tema androidx.Preference
. O drawable chevron
é definido em 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>
A ripple
é definida em 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 o layout no estilo acima estiver sendo sobreposto, os clientes precisam garantir que o novo layout forneça pelo menos os ids esperados pelas classes androidx
correspondentes. Isso também se aplica aos outros elementos que usam esse estilo base.
CarUiDropDownPreference
Este é o equivalente CarUi da classe androidx.preference.DropDownPreference
e usa o seguinte estilo:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButtonPreference
Essa subclasse de androidx.preference.TwoStatePreference
infla o layout car_ui_radio_button_preference_widget
durante a inicialização. Se este layout está sendo sobreposto em um RRO, o novo layout deve conter um elemento do tipo android.widget.RadioButton
, com id R.id.radio_button
e também deve conter outros elementos e ids exigidos pela classe base.
CarUiSwitchPreference
Este é o equivalente CarUi da classe androidx.preference.SwitchPreference
. A diferença é que quando este elemento não está habilitado, uma mensagem de brinde é mostrada. A mensagem do sistema pode ser personalizada chamando o método setMessageToShowWhenDisabledPreferenceClicked
no Android 10 e Android 11. Esse elemento usa o seguinte 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>
CarUiTwoActionPreference
Uma subclasse de CarUiPreference
que habilita uma ação secundária. Os atributos que podem ser usados para personalizar este elemento são fornecidos abaixo:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Esse elemento usa o mesmo estilo da classe base e requer R.id.action_widget_container
e android.R.id.widget_frame
.
CarUiDialogFragment
Essa classe é emprestada de androidx.preference.PreferenceDialogFragmentCompat
com algumas adições específicas para CarUi. Os clientes devem usar subclasses desta classe para apresentar a plataforma temática AlertDialog
.
PreferenceDialogFragment
Uma subclasse direta de CarUiDialogFragment
. Os clientes devem subclassificar esta classe para apresentar qualquer plataforma temática AlertDialog
.
CarUiEditTextPreference
Este é o equivalente CarUi da classe androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Se o layout no estilo acima estiver sendo sobreposto, os clientes precisam garantir que o novo layout forneça os IDs esperados pela classe androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Uma subclasse direta de PreferenceDialogFragment
. Além disso, o equivalente CarUi da classe androidx.preference.PreferenceDialogFragments
. Os clientes devem usar essa classe para apresentar qualquer plataforma temática AlertDialog
.
CarUiSeekBarDialogPreference
Uma implementação da classe androidx.preference.DialogPreference
, que fornece a funcionalidade 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
Um fragmento que fornece um layout com um SeekBar em uma caixa de diálogo.
CarUiListPreference
CarUi equivalente da classe androidx.preference.ListPreference
.
ListPreferenceFragment
Um fragmento que fornece um layout com androidx.preference.ListPreference
nele.
CarUiMultiSelectListPreference
O equivalente CarUi da classe androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Um fragmento que fornece um layout com com.android.car.ui.CarUiMultiSelectListPreference
nele.