Dostosuj preferencje interfejsu samochodu

Na tej stronie opisano, jak używać i dostosowywać elementy pakietu com.android.car.ui.preference , który zawiera elementy interfejsu użytkownika, których można używać do prezentowania preferencji aplikacji.

Większość elementów stanowi podklasę klas com.androidx.preference , do których można dodać dostosowania CarUi. W większości przypadków elementów pakietu com.android.car.ui.preferences można używać za pomocą com.android.car.PreferenceFragment . PreferenceFragment zastępuje wszystkie elementy androidx.preference ich odpowiednikami w car.ui.preferences . Aby zobaczyć te funkcje w działaniu, zobacz aplikację referencyjną car-ui-lib Paintbooth. Na przykład:

Układ preferencji interfejsu użytkownika samochodu

Rysunek 1. Układ preferencji interfejsu samochodu.

Dostępne typy preferencji

W tej sekcji opisano typy preferencji interfejsu samochodu.

Fragment preferencji

PreferenceFragment jest podklasą androidx.preference.PreferenceFragmentCompat i jest klasą bazową, której powinni używać klienci. Podczas wywołania metody setPreferenceScreen ta klasa automatycznie zastępuje elementy z androidx.preference dostępnym odpowiednikiem z elementów 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>

Preferencje CarUi

Jest to odpowiednik klasy androidx.preference.Preference w CarUi, który obsługuje następujące atrybuty, które można dostosować za pomocą nakładki zasobów środowiska wykonawczego (RRO). Wszystkie inne elementy CarUi korzystające z wariantu stylu CarUiPreference obsługują również następujące 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ę podstawowy styl com.android.car.ui.preference , który stanowi rozszerzenie motywu androidx.Preference . Możliwość narysowania chevron jest zdefiniowana w 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>

ripple jest zdefiniowane 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 powyższym stylu jest nakładany, klienci muszą się upewnić, że nowy układ zapewnia przynajmniej identyfikatory oczekiwane przez odpowiednie klasy androidx . Dotyczy to również innych elementów korzystających z tego stylu podstawowego.

Preferencje CarUiDropDown

Jest to odpowiednik klasy androidx.preference.DropDownPreference w CarUi i wykorzystuje następujący styl:

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

Preferencje CarUiRadioButton

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

Preferencje CarUiSwitch

Jest to odpowiednik klasy androidx.preference.SwitchPreference w CarUi. Różnica polega na tym, że gdy ten element nie jest włączony, wyświetlany jest komunikat toastowy. Komunikat toastowy można dostosować, wywołując metodę setMessageToShowWhenDisabledPreferenceClicked w systemach Android 10 i Android 11. Ten element wykorzystuje następujący styl:

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

Preferencje CarUiTwoAction

Podklasa CarUiPreference , która umożliwia wykonanie akcji dodatkowej. Poniżej przedstawiono atrybuty, których można 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 bazowa i wymaga R.id.action_widget_container i android.R.id.widget_frame .

Fragment CarUiDialog

Ta klasa została zapożyczona z androidx.preference.PreferenceDialogFragmentCompat z pewnymi dodatkami specyficznymi dla CarUi. Klienci powinni używać podklas tej klasy, aby zaprezentować platformę tematyczną AlertDialog .

Fragment Dialogu Preferencji

Bezpośrednia podklasa CarUiDialogFragment . Klienci powinni podklasować tę klasę, aby prezentować dowolną platformę tematyczną AlertDialog .

Preferencje CarUiEditText

To jest odpowiednik CarUi klasy androidx.preference.EditTextPreference :

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

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

EditTextPreferenceDialogFragment

Bezpośrednia podklasa PreferenceDialogFragment . Ponadto odpowiednik CarUi klasy androidx.preference.PreferenceDialogFragments . Klienci powinni używać tej klasy do prezentowania dowolnej platformy tematycznej AlertDialog .

Preferencje CarUiSeekBarDialog

Implementacja klasy androidx.preference.DialogPreference , która udostępnia 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 udostępniający układ z SeekBar w oknie dialogowym.

Preferencje CarUiList

Odpowiednik CarUi klasy androidx.preference.ListPreference .

Fragment listy preferencji

Fragment udostępniający układ zawierający androidx.preference.ListPreference .

Preferencje CarUiMultiSelectList

Odpowiednik klasy CarUi klasy androidx.preference.Preference .

Fragment MultiSelectListPreference

Fragment udostępniający układ zawierający com.android.car.ui.CarUiMultiSelectListPreference .