Dostosowywanie ustawień interfejsu samochodu

Na tej stronie opisujemy, jak używać i dostosowywać elementy z pakietu com.android.car.ui.preference, który zawiera elementy interfejsu użytkownika, których można używać do przedstawiania ustawień aplikacji.

Większość elementów to podklasy klasy com.androidx.preference, do której dodajesz elementy CarUi. W większości przypadków możesz używać elementów z pakietu com.android.car.ui.preferences, korzystając z elementu com.android.car.PreferenceFragment. PreferenceFragment zastępuje wszystkie elementy androidx.preference ich odpowiednikami w car.ui.preferences. Aby zobaczyć, jak te funkcje działają, zapoznaj się z aplikacją referencyjną Paintbooth, która korzysta z biblioteki car-ui-lib. Na przykład:

Ustawienia interfejsu Car UI

Rysunek 1. Układ ustawień Car UI

Dostępne typy ustawień

W tej sekcji opisujemy typy ustawień interfejsu Car UI.

PreferenceFragment

PreferenceFragment jest podklasą klasy androidx.preference.PreferenceFragmentCompat i jest klasą podstawową, której powinni używać klienci. Podczas wywołania klasy setPreferenceScreen automatycznie zastępuje elementy z poziomu androidx.preference dostępnymi odpowiednikami z poziomu car.ui.preference.

<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

Jest to odpowiednik klasy androidx.preference.Preference dla CarUi, która obsługuje te atrybuty, które można dostosować za pomocą nakładki zasobów w czasie wykonywania (RRO). Wszystkie inne elementy CarUi, które używają wariantu stylu CarUiPreference, również obsługują te atrybuty.

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

Poniżej znajduje się styl podstawowy dla motywu com.android.car.ui.preference, który rozszerza motyw androidx.Preference. Obiekt graficzny chevron jest zdefiniowany w pliku 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>

Wartość ripple jest zdefiniowana w 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>

Jeśli układ w tym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zawiera co najmniej te identyfikatory, których oczekują odpowiednie klasy androidx. Dotyczy to też innych elementów, które używają tego stylu bazowego.

CarUiDropDownPreference

Jest to odpowiednik klasy androidx.preference.DropDownPreference w CarUi. Używa tego stylu:

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

CarUiRadioButtonPreference

Ta podklasa klasy androidx.preference.TwoStatePreference wczytuje układ car_ui_radio_button_preference_widget podczas inicjalizacji. Jeśli ten układ jest nakładany w ramach RRO, nowy układ musi zawierać element typu android.widget.RadioButton o identyfikatorze R.id.radio_button, a także inne elementy i identyfikatory wymagane przez klasę podstawową.

CarUiSwitchPreference

Jest to odpowiednik klasy androidx.preference.SwitchPreference w CarUi. Różnica polega na tym, że gdy ten element jest wyłączony, wyświetla się komunikat. Komunikat toastowy można dostosować, wywołując metodę setMessageToShowWhenDisabledPreferenceClicked w Androidzie 10 i 11. Ten element używa tego stylu:

<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

Podklasa CarUiPreference, która umożliwia działanie dodatkowe. Poniżej znajdziesz listę atrybutów, których możesz użyć do dostosowania tego elementu:

<declare-styleable name="CarUiTwoActionPreference">
        <!-- Determines if the secondary action is initially shown -->
        <attr name="actionShown" format="boolean"/>
</declare-styleable>

Ten element używa tego samego stylu co klasa podstawowa i wymaga atrybutów R.id.action_widget_containerandroid.R.id.widget_frame.

CarUiDialogFragment

Ta klasa jest zapożyczona w całościandroidx.preference.PreferenceDialogFragmentCompat z niektórymi dodatkami specyficznymi dla CarUi. Klienci powinni używać podklas tej klasy, aby prezentować platformę tematyczno-tematyczną AlertDialog.

PreferenceDialogFragment

Bezpośrednia podklasa CarUiDialogFragment . Klienci powinni utworzyć podklasę tej klasy, aby przedstawić dowolną platformę tematyczą AlertDialog.

CarUiEditTextPreference

Oto odpowiednik klasy androidx.preference.EditTextPreference w CarUi:

<style name="Preference.CarUi.DialogPreference.EditTextPreference">
        <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item>
</style>

Jeśli układ w tym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zawiera identyfikatory oczekiwane przez klasę androidx.preference.EditTextPreference.

EditTextPreferenceDialogFragment

Bezpośrednia podklasa PreferenceDialogFragment. Również odpowiednik klasy androidx.preference.PreferenceDialogFragments w CarUi. Klienci powinni używać tej klasy, aby przedstawić dowolną platformę tematycznie AlertDialog.

CarUiSeekBarDialogPreference

Implementacja klasy androidx.preference.DialogPreference, która zapewnia funkcjonalność SeekBar:

<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

Fragment przedstawiający układ z suwak w oknie dialogowym.

CarUiListPreference

Odpowiednik klasy androidx.preference.ListPreference w CarUi.

ListPreferenceFragment

Fragment, który zawiera układ z elementem androidx.preference.ListPreference.

CarUiMultiSelectListPreference

Odpowiednik klasy androidx.preference.Preference w CarUi.

MultiSelectListPreferenceFragment

Fragment, który zawiera układ z elementem com.android.car.ui.CarUiMultiSelectListPreference.