Passen Sie die Einstellungen der Auto-Benutzeroberfläche an

Auf dieser Seite wird beschrieben, wie Elemente im Paket com.android.car.ui.preference verwendet und angepasst werden, das UI-Elemente enthält, die zur Darstellung von Einstellungen für Apps verwendet werden können.

Die meisten Elemente sind Unterklassen com.androidx.preference , denen Sie CarUi-Anpassungen hinzufügen. In den meisten Fällen können Sie die Elemente im Paket com.android.car.ui.preferences verwenden, indem Sie com.android.car.PreferenceFragment verwenden. PreferenceFragment ersetzt alle androidx.preference Elemente durch ihre Entsprechungen in car.ui.preferences . Um diese Funktionen in Aktion zu sehen, sehen Sie sich die Referenz-App car-ui-lib Paintbooth an. Zum Beispiel:

Präferenzlayout der Auto-Benutzeroberfläche

Abbildung 1. Layout der Auto-Benutzeroberfläche.

Verfügbare Präferenztypen

In diesem Abschnitt werden die Präferenztypen der Auto-Benutzeroberfläche beschrieben.

PräferenzFragment

PreferenceFragment ist eine Unterklasse von androidx.preference.PreferenceFragmentCompat und die Basisklasse, die Clients verwenden sollten. Während eines Aufrufs von setPreferenceScreen ersetzt diese Klasse automatisch die Elemente aus androidx.preference durch das verfügbare Äquivalent 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 Klasse androidx.preference.Preference , die die folgenden Attribute unterstützt, die mithilfe eines 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>

Das Folgende ist der Basisstil für com.android.car.ui.preference , der das androidx.Preference -Design erweitert. Das chevron Zeichnbare 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>

Die 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 oben genannten Stil überlagert wird, müssen Clients sicherstellen, dass das neue Layout mindestens die IDs bereitstellt, die von den entsprechenden androidx Klassen erwartet werden. Dies gilt auch für die anderen Elemente, die diesen Basisstil verwenden.

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 erweitert 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 für die Basisklasse erforderliche Elemente und IDs enthalten.

CarUiSwitchPreference

Dies ist das CarUi-Äquivalent der Klasse androidx.preference.SwitchPreference . Der Unterschied besteht darin, dass eine Toastmeldung angezeigt wird, wenn dieses Element nicht aktiviert ist. Die Toastnachricht kann durch Aufrufen der setMessageToShowWhenDisabledPreferenceClicked Methode 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. Die Attribute, die zum Anpassen 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

Diese Klasse ist unverändert von androidx.preference.PreferenceDialogFragmentCompat entlehnt , mit einigen für CarUi spezifischen Ergänzungen. Clients sollten Unterklassen dieser Klasse verwenden, um die thematische Plattform AlertDialog darzustellen.

PreferenceDialogFragment

Eine direkte Unterklasse von CarUiDialogFragment . Clients sollten diese Klasse in eine Unterklasse umwandeln, um AlertDialog für jede thematische Plattform darzustellen.

CarUiEditTextPreference

Dies ist das CarUi-Äquivalent der 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 oben genannten Stil überlagert wird, müssen Clients sicherstellen, dass das neue Layout die von der Klasse androidx.preference.EditTextPreference erwarteten IDs bereitstellt.

EditTextPreferenceDialogFragment

Eine direkte Unterklasse von PreferenceDialogFragment . Außerdem das CarUi-Äquivalent der Klasse androidx.preference.PreferenceDialogFragments . Kunden sollten diese Klasse verwenden, um AlertDialog für jede thematische Plattform zu präsentieren.

CarUiSeekBarDialogPreference

Eine Implementierung der androidx.preference.DialogPreference -Klasse, die SeekBar- Funktionalität bereitstellt:

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

CarUiListPreference

CarUi-Äquivalent der androidx.preference.ListPreference Klasse.

ListPreferenceFragment

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

CarUiMultiSelectListPreference

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

MultiSelectListPreferenceFragment

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