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 phần tử giao diện người dùng có thể dùng để hiển thị các lựa chọn ưu tiên cho ứng dụng.
Hầu hết các phần tử đều là lớp con của các lớp com.androidx.preference
mà bạn thêm 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 gói com.android.car.ui.preferences
bằng cách sử dụng com.android.car.PreferenceFragment
. PreferenceFragment
thay thế tất cả các phần tử androidx.preference
bằng các phần tử tương đương trong car.ui.preferences
. Để xem các chức năng này hoạt động, hãy xem ứng dụng tham khảo Paintbooth car-ui-lib. Ví dụ:
Hình 1. Bố cục lựa chọn ưu tiên về giao diện người dùng trên ô tô.
Các loại lựa chọn ưu tiên có sẵn
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ở mà ứng dụng nên sử dụng. Trong lệnh gọi đến setPreferenceScreen
, lớp này sẽ tự động thay thế các phần tử từ androidx.preference
bằng các phần tử tương đương có sẵ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à CarUi tương đương với lớp androidx.preference.Preference
hỗ trợ các thuộc tính sau. Bạn có thể tuỳ chỉnh các thuộc tính này bằ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 xác định 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 theo kiểu ở trên đang được phủ lên, thì ứng dụng cần đảm bảo rằng bố cục mới ít nhất cung cấp các mã nhận dạng mà các lớp androidx
tương ứng dự kiến. Điều này cũng áp dụng cho các phần tử khác sử dụng kiểu cơ sở này.
CarUiDropDownPreference
Đây là CarUi tương đương với lớp androidx.preference.DropDownPreference
và sử dụng kiểu sau:
<style name="Preference.CarUi.DropDown"> <item name="android:layout">@layout/car_ui_preference_dropdown</item> </style>
CarUiRadioButtonPreference
Lớp con này của androidx.preference.TwoStatePreference
tăng cường bố cục car_ui_radio_button_preference_widget
trong quá trình khởi chạy. Nếu bố cục này đang được 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ã nhận dạng R.id.radio_button
và 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.
CarUiSwitchPreference
Đây là 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ẽ xuất hiện. Bạn có thể tuỳ chỉnh thông báo ngắn bằng cách gọi 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>
CarUiTwoActionPreference
Một lớp con của CarUiPreference
cho phép một hành động phụ. Dưới đây là các thuộc tính có thể dùng để tuỳ chỉnh phần tử nà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 một kiểu với lớp cơ sở và yêu cầu R.id.action_widget_container
và android.R.id.widget_frame
.
CarUiDialogFragment
Lớp này được mượn nguyên trạng từ androidx.preference.PreferenceDialogFragmentCompat
với một số nội dung bổ sung dành riêng cho CarUi. Ứng dụng nên sử dụng các lớp con của lớp này để hiển thị 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 tạo lớp con cho lớp này để hiển thị bất kỳ nền tảng theo chủ đề nào AlertDialog
.
CarUiEditTextPreference
Đây là CarUi tương đương với lớp androidx.preference.EditTextPreference
:
<style name="Preference.CarUi.DialogPreference.EditTextPreference"> <item name="android:dialogLayout">@layout/car_ui_preference_dialog_edittext</item> </style>
Nếu bố cục theo kiểu ở trên đang được phủ lên, thì ứ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
. Ứng dụng nên sử dụng lớp này để trình bày mọi nền tảng theo chủ đề AlertDialog
.
CarUiSeekBarDialogPreference
Cách triển khai lớp androidx.preference.DialogPreference
, cung cấp chức năng 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
Một mảnh cung cấp bố cục có SeekBar trong hộp thoại.
CarUiListPreference
CarUi tương đương với lớp androidx.preference.ListPreference
.
ListPreferenceFragment
Một mảnh cung cấp bố cục có androidx.preference.ListPreference
trong đó.
CarUiMultiSelectListPreference
CarUi tương đương với lớp androidx.preference.Preference
.
MultiSelectListPreferenceFragment
Một mảnh cung cấp bố cục có com.android.car.ui.CarUiMultiSelectListPreference
trong đó.