Einstellungen der Auto-Benutzeroberfläche anpassen

Auf dieser Seite wird beschrieben, wie Sie Elemente in der com.android.car.ui.preference-Paket, das UI-Elemente enthält zum Präsentieren von Einstellungen für Apps.

Für die meisten Elemente werden com.androidx.preference-Klassen abgeleitet, denen Sie hinzufügen. CarUi-Anpassungen In den meisten Fällen können Sie die Elemente in der com.android.car.ui.preferences-Paket mithilfe von com.android.car.PreferenceFragment. PreferenceFragment ersetzt alle androidx.preference-Elemente mit ihren Entsprechungen in car.ui.preferences Um diese Funktionen in Aktion zu sehen, gehen Sie zum Abschnitt car-ui-lib Paintbooth-Referenz-App Hier einige Beispiele:

Layout der Benutzeroberfläche des Autos

Abbildung 1: Layout der Benutzeroberfläche des Autos

Verfügbare Einstellungstypen

In diesem Abschnitt werden die Einstellungstypen der Benutzeroberfläche des Autos beschrieben.

Präferenzfragment

PreferenceFragment ist eine abgeleitete Klasse von androidx.preference.PreferenceFragmentCompat und ist die Basisklasse, die Kunden nutzen sollten. Während eines Anrufs bei setPreferenceScreen wird dieser Kurs ersetzt automatisch die Elemente aus androidx.preference durch die Äquivalent zu car.ui.preference-Elementen verfügbar.

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

Autopräferenz

Dies ist das CarUi-Äquivalent der androidx.preference.Preference-Klasse, die unterstützt die folgenden Attribute, die mit einem Runtime Resource Overlay (RRO) angepasst werden können. Alle anderen CarUi-Elemente, die eine Variante des CarUiPreference-Stils verwenden, unterstützen 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 erweitert Design androidx.Preference. Das Drawable chevron ist definiert in car_ui_preference_icon_chevron.xml.

<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 definiert in car_ui_recyclerview_button_ripple_background.

<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 als Overlays verwendet wird, muss die Kundschaft sicherstellen, enthält das neue Layout zumindest die IDs, die von den entsprechenden androidx Klassen. Dies gilt auch für die anderen Elemente, für diesen Basisstil.

AutoDropdown-Einstellung

Dies ist das CarUi-Äquivalent zu androidx.preference.DropDownPreference und verwendet den folgenden Stil:

<style name="Preference.CarUi.DropDown">
        <item name="android:layout">@layout/car_ui_preference_dropdown</item>
</style>

Auto-Radio-Schaltflächenpräferenz

Diese abgeleitete Klasse von androidx.preference.TwoStatePreference bläht das car_ui_radio_button_preference_widget-Layout während die Initialisierung bei. Wenn dieses Layout in einer RRO überlagert wird, muss das neue Layout Enthalten ein Element vom Typ android.widget.RadioButton mit ID R.id.radio_button. Außerdem müssen sie weitere Elemente und IDs enthalten. die für die Basisklasse erforderlich sind.

CarUiSwitch-Präferenz

Dies ist das CarUi-Äquivalent der androidx.preference.SwitchPreference-Klasse. Der Unterschied besteht darin, dass, wenn dieses Element nicht aktiviert ist, eine Toast-Nachricht angezeigt wird. Toast kann angepasst werden, indem die Methode setMessageToShowWhenDisabledPreferenceClicked-Methode in Android 10 und Android 11. 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 abgeleitete Klasse von CarUiPreference, die eine sekundäre Aktion aktiviert. Der von Attribute, die zur Anpassung 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

Dieser Kurs wird wie besehen von androidx.preference.PreferenceDialogFragmentCompat mit einigen Ergänzungen spezifisch für CarUi. Clients sollten abgeleitete Klassen dieser Klasse verwenden, um thematische Plattform AlertDialog.

PreferenceDialogFragment (Präferenzdialogfeld)

Eine direkte abgeleitete Klasse von CarUiDialogFragment . Clients sollten diese Klasse ableiten um beliebige themenbezogene Plattformen AlertDialog zu präsentieren.

CarUiEditTextPreference

Dies ist das CarUi-Äquivalent zu 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 als Overlays verwendet wird, müssen die Kunden sicherstellen, dass das neue Layout stellt die von der Klasse androidx.preference.EditTextPreference erwarteten IDs bereit.

EditTextPreferenceDialogFragment

Eine direkte abgeleitete Klasse von PreferenceDialogFragment. Das CarUi-Äquivalent zu die Klasse androidx.preference.PreferenceDialogFragments. Kunden sollten verwenden Sie diese Klasse, um jede thematische Plattform AlertDialog zu präsentieren.

CarUiSeekBarDialogPreference

Eine Implementierung der Klasse androidx.preference.DialogPreference, mit Suchleiste Funktionalität:

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

Listeneinstellungsfragment

Ein Fragment, das ein Layout mit androidx.preference.ListPreference darin.

CarUiMultiSelectListPreference

Das CarUi-Äquivalent der androidx.preference.Preference-Klasse.

MultiSelectListPreferenceFragment

Ein Fragment, das ein Layout mit com.android.car.ui.CarUiMultiSelectListPreference darin.