Auf dieser Seite wird beschrieben, wie Sie Elemente im com.android.car.ui.preference
-Paket verwenden und anpassen. Dieses Paket enthält UI-Elemente, mit denen sich Einstellungen für Apps präsentieren lassen.
Die meisten Elemente sind Unterklassen von com.androidx.preference
-Klassen, denen Sie CarUi-Anpassungen hinzufügen. In den meisten Fällen können Sie die Elemente im Paket com.android.car.ui.preferences
mit com.android.car.PreferenceFragment
verwenden. PreferenceFragment
ersetzt alle androidx.preference
-Elemente durch ihre Entsprechungen in car.ui.preferences
. Eine Demo dieser Funktionen finden Sie in der Referenz-App „Paintbooth“ der car-ui-lib. Beispiele:
Abbildung 1: Layout der Einstellungen für die Auto-UI
Verfügbare Einstellungstypen
In diesem Abschnitt werden die Arten von Einstellungen für die Benutzeroberfläche des Autos beschrieben.
PreferenceFragment
PreferenceFragment
ist eine Unterklasse von androidx.preference.PreferenceFragmentCompat
und die Basisklasse, die von Kunden verwendet werden sollte. Bei einem Aufruf von setPreferenceScreen
ersetzt diese Klasse die Elemente von androidx.preference
automatisch durch die verfügbaren Äquivalente 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 androidx.preference.Preference
-Klasse, das die folgenden Attribute unterstützt, die mit einem 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>
Im Folgenden finden Sie den Basisstil für com.android.car.ui.preference
, der das androidx.Preference
-Design erweitert. Das chevron
-Zeichnenobjekt 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>
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 obigen Stil überlagert wird, müssen Kunden darauf achten, dass das neue Layout mindestens die IDs enthält, die von den entsprechenden androidx
-Klassen erwartet werden. Das gilt auch für die anderen Elemente, für die dieser Basisstil verwendet wird.
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
maximiert 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 Elemente und IDs enthalten, die von der Basisklasse benötigt werden.
CarUiSwitchPreference
Dies ist das CarUi-Äquivalent der androidx.preference.SwitchPreference
-Klasse.
Der Unterschied besteht darin, dass bei deaktiviertem Element eine Toast-Mitteilung angezeigt wird. Die Toastnachricht kann angepasst werden, indem Sie unter Android 10 und Android 11 die Methode setMessageToShowWhenDisabledPreferenceClicked
aufrufen. 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. Im Folgenden finden Sie die Attribute, mit denen sich dieses Element anpassen lässt:
<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 wurde unverändert aus androidx.preference.PreferenceDialogFragmentCompat
übernommen, mit einigen Ergänzungen, die speziell für CarUi gedacht sind. Kunden sollten Unterklassen dieser Klasse verwenden, um die thematische Plattform AlertDialog
zu präsentieren.
PreferenceDialogFragment
Eine direkte Unterklasse von CarUiDialogFragment
. Kunden sollten diese Klasse unterordnen, um eine themenbezogene Plattform AlertDialog
zu präsentieren.
CarUiEditTextPreference
Das ist das CarUi-Äquivalent der androidx.preference.EditTextPreference
-Klasse:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Wenn das Layout im obigen Stil überlagert wird, müssen Kunden dafür sorgen, dass das neue Layout die IDs enthält, die von der Klasse androidx.preference.EditTextPreference
erwartet werden.
EditTextPreferenceDialogFragment
Eine direkte Unterklasse von PreferenceDialogFragment
. Außerdem das CarUi-Äquivalent der Klasse androidx.preference.PreferenceDialogFragments
. Kunden sollten diese Klasse verwenden, um eine themenbezogene Plattform zu präsentieren AlertDialog
.
CarUiSeekBarDialogPreference
Eine Implementierung der Klasse androidx.preference.DialogPreference
, die die Funktion SeekBar bietet:
<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 Dialogfeld bereitstellt.
CarUiListPreference
CarUi-Entsprechung der Klasse androidx.preference.ListPreference
.
ListPreferenceFragment
Ein Fragment, das ein Layout mit androidx.preference.ListPreference
enthält.
CarUiMultiSelectListPreference
Das CarUi-Äquivalent der Klasse androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Ein Fragment, das ein Layout mit com.android.car.ui.CarUiMultiSelectListPreference
enthält.