Einstellungen der Auto-Benutzeroberfläche anpassen

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:

Layout der Einstellungen für die Auto-UI

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.