Tuỳ chỉnh các lựa chọn ưu tiên về giao diện người dùng trên ô tô

Trang này mô tả cách sử dụng và tuỳ chỉnh các phần tử trong Gói com.android.car.ui.preference bao gồm các thành phần trên giao diện người dùng có thể dùng để trình bày lựa chọn ưu tiên cho ứng dụng.

Hầu hết các phần tử đang phân lớp con các lớp com.androidx.preference mà bạn thêm vào Tuỳ chỉnh CarUi. Trong hầu hết các trường hợp, bạn có thể sử dụng các phần tử trong com.android.car.ui.preferences gói bằng cách sử dụng com.android.car.PreferenceFragment PreferenceFragment thay thế tất cả Phần tử androidx.preference có các phần tử tương đương trong car.ui.preferences. Để xem các chức năng này trong thực tế, hãy xem car-ui-lib Ứng dụng tham chiếu Paintbooth. Ví dụ:

Bố cục lựa chọn ưu tiên của giao diện người dùng ô tô

Hình 1. Bố cục lựa chọn ưu tiên của giao diện người dùng ô tô.

Các loại lựa chọn ưu tiên hiện có

Phần này mô tả các loại lựa chọn ưu tiên về giao diện người dùng trên ô tô.

PreferenceFragment

PreferenceFragment là lớp con của androidx.preference.PreferenceFragmentCompat và là lớp cơ sở khách hàng nên sử dụng. Trong khi gọi đến setPreferenceScreen, lớp này tự động thay thế các phần tử từ androidx.preference bằng phương thức tương đương có sẵn từ các phần tử 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

Đây là lớp CarUi tương đương với lớp androidx.preference.Preference hỗ trợ các thuộc tính sau. Các thuộc tính này có thể được tuỳ chỉnh bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO). Tất cả các phần tử CarUi khác sử dụng biến thể của kiểu CarUiPreference cũng hỗ trợ các thuộc tính sau.

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

Sau đây là kiểu cơ sở cho com.android.car.ui.preference, mở rộng giao diện androidx.Preference. Đối tượng có thể vẽ chevron được xác định trong 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 được định nghĩa trong 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>

Nếu bố cục trong kiểu trên đang được phủ lên, ứng dụng khách cần đảm bảo bố cục mới ít nhất cung cấp các mã nhận dạng được mong đợi bằng androidx lớp. Điều này cũng áp dụng cho các thành phần khác sử dụng kiểu cơ bản này.

CarUiDropDownPreference

Đây là CarUi tương đương với androidx.preference.DropDownPreference lớp và dùng kiểu sau:

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

Lựa chọn CarUiRadioButtonPreferences

Lớp con này của androidx.preference.TwoStatePreference tăng cường bố cục car_ui_radio_button_preference_widget trong khởi tạo. Nếu bố cục này đang bị che phủ trong một RRO, thì bố cục mới phải chứa một phần tử thuộc loại android.widget.RadioButton, có mã R.id.radio_button đồng thời cũng phải chứa các phần tử và mã nhận dạng khác mà lớp cơ sở yêu cầu.

Tùy chọn chuyển đổi CarUi

Đây là lớp CarUi tương đương với lớp androidx.preference.SwitchPreference. Điểm khác biệt là khi phần tử này không được bật, một thông báo ngắn sẽ hiển thị. Thông báo ngắn thông báo có thể được tuỳ chỉnh bằng cách gọi thuộc tính Phương thức setMessageToShowWhenDisabledPreferenceClicked trong Android 10 và Android 11. Phần tử này sử dụng kiểu sau:

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

Tùy chọn CarUiTwoAction

Một lớp con của CarUiPreference cho phép thực hiện hành động phụ. của các thuộc tính có thể dùng để tuỳ chỉnh phần tử này được cung cấp dưới đây:

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

Phần tử này sử dụng cùng kiểu với lớp cơ sở và yêu cầu R.id.action_widget_containerandroid.R.id.widget_frame.

CarUiDialogFragment

Lớp học này được mượn nguyên trạng của androidx.preference.PreferenceDialogFragmentCompat với một số mục bổ sung dành riêng cho CarUi. Ứng dụng phải sử dụng các lớp con của lớp này để trình bày nền tảng theo chủ đề AlertDialog.

PreferenceDialogFragment

Một lớp con trực tiếp của CarUiDialogFragment . Ứng dụng nên thêm lớp này vào lớp con để trình bày mọi nền tảng theo chủ đề AlertDialog.

CarUiEditTextPreferences

Đây là CarUi tương đương với androidx.preference.EditTextPreference lớp:

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

Nếu bố cục trong kiểu ở trên đang được phủ lên, ứng dụng cần đảm bảo bố cục mới cung cấp các mã nhận dạng mà lớp androidx.preference.EditTextPreference dự kiến.

EditTextPreferenceDialogFragment

Một lớp con trực tiếp của PreferenceDialogFragment. Ngoài ra, CarUi tương đương với lớp androidx.preference.PreferenceDialogFragments. Khách hàng nên sử dụng lớp này để trình bày mọi nền tảng theo chủ đề AlertDialog.

CarUiSeekBarDialogPreferences

Cách triển khai lớp androidx.preference.DialogPreference, cung cấp Thanh tìm kiếm chức năng:

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

Tìm kiếm thanh ưu tiên DialogFragment

Một mảnh cung cấp bố cục có một RecyclerView trong hộp thoại.

Tùy chọn danh sách CarUiList

CarUi tương đương với lớp androidx.preference.ListPreference.

ListPreferenceFragment

Một mảnh cung cấp bố cục androidx.preference.ListPreference trong đó.

Lựa chọn CarUiMultiSelectListPreferences

CarUi tương đương với lớp androidx.preference.Preference.

MultiSelectListPreferenceFragment

Một mảnh cung cấp bố cục com.android.car.ui.CarUiMultiSelectListPreference trong đó.