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.

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:

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 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.