Auf dieser Seite wird beschrieben, wie Elemente im Paket com.android.car.ui.preference
verwendet und angepasst werden, das UI-Elemente enthält, die zur Darstellung von Einstellungen für Apps verwendet werden können.
Die meisten Elemente sind Unterklassen com.androidx.preference
, denen Sie CarUi-Anpassungen hinzufügen. In den meisten Fällen können Sie die Elemente im Paket com.android.car.ui.preferences
verwenden, indem Sie com.android.car.PreferenceFragment
verwenden. PreferenceFragment
ersetzt alle androidx.preference
Elemente durch ihre Entsprechungen in car.ui.preferences
. Um diese Funktionen in Aktion zu sehen, sehen Sie sich die Referenz-App car-ui-lib Paintbooth an. Zum Beispiel:
Abbildung 1. Layout der Auto-Benutzeroberfläche.
Verfügbare Präferenztypen
In diesem Abschnitt werden die Präferenztypen der Auto-Benutzeroberfläche beschrieben.
PräferenzFragment
PreferenceFragment
ist eine Unterklasse von androidx.preference.PreferenceFragmentCompat
und die Basisklasse, die Clients verwenden sollten. Während eines Aufrufs von setPreferenceScreen
ersetzt diese Klasse automatisch die Elemente aus androidx.preference
durch das verfügbare Äquivalent aus car.ui.preference
Elementen.
<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
Dies ist das CarUi-Äquivalent der Klasse androidx.preference.Preference
, die die folgenden Attribute unterstützt, die mithilfe eines Runtime Resource Overlay (RRO) angepasst werden können. Alle anderen CarUi-Elemente, die eine Variante des CarUiPreference
-Stils verwenden, unterstützen auch die folgenden Attribute.
<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>
Das Folgende ist der Basisstil für com.android.car.ui.preference
, der das androidx.Preference
-Design erweitert. Das chevron
Zeichnbare ist in car_ui_preference_icon_chevron.xml
definiert.
<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>
Die ripple
ist in car_ui_recyclerview_button_ripple_background
definiert.
<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>
Wenn das Layout im oben genannten Stil überlagert wird, müssen Clients sicherstellen, dass das neue Layout mindestens die IDs bereitstellt, die von den entsprechenden androidx
Klassen erwartet werden. Dies gilt auch für die anderen Elemente, die diesen Basisstil verwenden.
CarUiDropDownPreference
Dies ist das CarUi-Äquivalent der Klasse androidx.preference.DropDownPreference
und verwendet den folgenden Stil:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButtonPreference
Diese Unterklasse von androidx.preference.TwoStatePreference
erweitert das car_ui_radio_button_preference_widget
Layout während der Initialisierung. Wenn dieses Layout in einem RRO überlagert wird, muss das neue Layout ein Element vom Typ android.widget.RadioButton
mit der ID R.id.radio_button
sowie andere für die Basisklasse erforderliche Elemente und IDs enthalten.
CarUiSwitchPreference
Dies ist das CarUi-Äquivalent der Klasse androidx.preference.SwitchPreference
. Der Unterschied besteht darin, dass eine Toastmeldung angezeigt wird, wenn dieses Element nicht aktiviert ist. Die Toastnachricht kann durch Aufrufen der setMessageToShowWhenDisabledPreferenceClicked
Methode in Android 10 und Android 11 angepasst werden. Dieses Element verwendet den folgenden Stil:
<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
Eine Unterklasse von CarUiPreference
, die eine sekundäre Aktion ermöglicht. Die Attribute, die zum Anpassen dieses Elements verwendet werden können, sind unten aufgeführt:
<declare-styleable name="CarUiTwoActionPreference"> <!-- Determines if the secondary action is initially shown --> <attr name="actionShown" format="boolean"/> </declare-styleable>
Dieses Element verwendet denselben Stil wie die Basisklasse und erfordert R.id.action_widget_container
und android.R.id.widget_frame
.
CarUiDialogFragment
Diese Klasse ist unverändert von androidx.preference.PreferenceDialogFragmentCompat
entlehnt , mit einigen für CarUi spezifischen Ergänzungen. Clients sollten Unterklassen dieser Klasse verwenden, um die thematische Plattform AlertDialog
darzustellen.
PreferenceDialogFragment
Eine direkte Unterklasse von CarUiDialogFragment
. Clients sollten diese Klasse in eine Unterklasse umwandeln, um AlertDialog
für jede thematische Plattform darzustellen.
CarUiEditTextPreference
Dies ist das CarUi-Äquivalent der Klasse androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Wenn das Layout im oben genannten Stil überlagert wird, müssen Clients sicherstellen, dass das neue Layout die von der Klasse androidx.preference.EditTextPreference
erwarteten IDs bereitstellt.
EditTextPreferenceDialogFragment
Eine direkte Unterklasse von PreferenceDialogFragment
. Außerdem das CarUi-Äquivalent der Klasse androidx.preference.PreferenceDialogFragments
. Kunden sollten diese Klasse verwenden, um AlertDialog
für jede thematische Plattform zu präsentieren.
CarUiSeekBarDialogPreference
Eine Implementierung der androidx.preference.DialogPreference
-Klasse, die SeekBar- Funktionalität bereitstellt:
<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
Ein Fragment, das ein Layout mit einer SeekBar in einem Dialog bereitstellt.
CarUiListPreference
CarUi-Äquivalent der androidx.preference.ListPreference
Klasse.
ListPreferenceFragment
Ein Fragment, das ein Layout mit androidx.preference.ListPreference
bereitstellt.
CarUiMultiSelectListPreference
Das CarUi-Äquivalent der androidx.preference.Preference
Klasse.
MultiSelectListPreferenceFragment
Ein Fragment, das ein Layout mit com.android.car.ui.CarUiMultiSelectListPreference
bereitstellt.