Esta página descreve como usar e personalizar elementos no
Pacote com.android.car.ui.preference
, que inclui elementos da interface
que podem ser usadas para apresentar preferências por apps.
A maioria dos elementos é uma subclasse das classes com.androidx.preference
às quais você adiciona
Personalizações do CarUi. Na maioria dos casos, você pode usar os elementos na
com.android.car.ui.preferences
usando
com.android.car.PreferenceFragment
. PreferenceFragment
substitui todos
androidx.preference
e seus equivalentes em
car.ui.preferences
Para conferir essas funcionalidades em ação, consulte o arquivo car-ui-lib
App de referência do Paintbooth. Por exemplo:
Figura 1. Layout de preferência da interface do carro.
Tipos de preferência disponíveis
Esta seção descreve os tipos de preferência da interface do carro.
PreferenceFragment
PreferenceFragment
é uma subclasse de
androidx.preference.PreferenceFragmentCompat
e é a classe de base que
que os clientes devem usar. Durante uma chamada para setPreferenceScreen
, esta 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
Esse é o equivalente do CarUi da classe androidx.preference.Preference
que
oferece suporte aos seguintes atributos, que podem ser personalizados usando uma sobreposição de recursos no ambiente de execução (RRO).
Todos os outros elementos CarUi que usam uma variante do estilo CarUiPreference
também
dão suporte aos atributos a seguir.
<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>
Confira a seguir o estilo base de 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>
O ripple
é definido 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
o novo layout fornece ao menos os IDs esperados pelos conjuntos
androidx
de turmas. Isso também se aplica aos outros elementos que usam
esse estilo base.
CarUiDropDownPreference
Esse é o equivalente do CarUi do 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 de car_ui_radio_button_preference_widget
durante
inicialização do sistema. Se esse layout estiver sendo sobreposto em uma RRO, o novo layout precisará
conter um elemento do tipo android.widget.RadioButton
, com ID
R.id.radio_button
e também precisa conter outros elementos e IDs
exigidos pela classe de base.
CarUiSwitchPreference
Esse é o equivalente no CarUi da classe androidx.preference.SwitchPreference
.
A diferença é que, quando esse elemento não é ativado, uma mensagem de aviso é exibida. O aviso
pode ser personalizada chamando o
Método setMessageToShowWhenDisabledPreferenceClicked
em
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 ativa uma ação secundária. O de
atributos que podem ser usados para personalizar esse 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
Esta turma é emprestada no estado em que se encontra no
androidx.preference.PreferenceDialogFragmentCompat
com algumas adições
específicas do CarUi. Os clientes devem usar subclasses dessa classe para apresentar
da plataforma com o tema AlertDialog
.
PreferenceDialogFragment
Uma subclasse direta de CarUiDialogFragment
. Os clientes devem criar uma subclasse para essa classe
para apresentar qualquer plataforma temática AlertDialog
.
CarUiEditTextPreference
Esse é o equivalente do CarUi do androidx.preference.EditTextPreference
.
classe:
<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
fornece os IDs esperados pela classe androidx.preference.EditTextPreference
.
EditTextPreferenceDialogFragment
Uma subclasse direta de PreferenceDialogFragment
. Além disso, o equivalente CarUi de
a classe androidx.preference.PreferenceDialogFragments
. Os clientes devem
use esta classe para apresentar qualquer plataforma temática AlertDialog
.
CarUiSeekBarDialogPreference
Uma implementação da classe androidx.preference.DialogPreference
que fornece
SeekBar (link em inglês).
funcionalidade:
<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 uma SeekBar em uma caixa de diálogo.
CarUiListPreference
Equivalente do CarUi à classe androidx.preference.ListPreference
.
ListPreferenceFragment
Um fragmento que fornece um layout com
androidx.preference.ListPreference
nele.
CarUiMultiSelectListPreference
O equivalente a CarUi da classe androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Um fragmento que fornece um layout com
com.android.car.ui.CarUiMultiSelectListPreference
nele.