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.
Für die meisten Elemente werden abgeleitete Klassen vom Typ com.androidx.preference
erstellt, denen Sie CarUi-Anpassungen hinzufügen können. 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 automatisch die Elemente von androidx.preference
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 eingeblendet wird, müssen Kunden darauf achten, dass das neue Layout zumindest die IDs bereitstellt, die von den entsprechenden androidx
-Klassen erwartet werden. Dies 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 Toast-Meldung kann durch Aufrufen der Methode setMessageToShowWhenDisabledPreferenceClicked
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. 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
Dies ist das CarUi-Äquivalent zur 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 obigen Stil eingeblendet wird, müssen Kunden darauf achten, dass das neue Layout die von der Klasse androidx.preference.EditTextPreference
erwarteten IDs enthält.
EditTextPreferenceDialogFragment
Eine direkte abgeleitete Klasse von PreferenceDialogFragment
. Außerdem das CarUi-Äquivalent der androidx.preference.PreferenceDialogFragments
-Klasse. 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.
CarUiListpräferenz
CarUi-Entsprechung der androidx.preference.ListPreference
-Klasse.
ListPreferenceFragment
Ein Fragment, das ein Layout mit androidx.preference.ListPreference
bereitstellt.
CarUiMultiSelectListPreference
Das CarUi-Äquivalent der Klasse androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Ein Fragment, das ein Layout mit com.android.car.ui.CarUiMultiSelectListPreference
enthält.