تنظیمات برگزیده رابط کاربری خودرو را سفارشی کنید

این صفحه نحوه استفاده و سفارشی کردن عناصر در بسته com.android.car.ui.preference را شرح می دهد که شامل عناصر رابط کاربری است که می تواند برای ارائه تنظیمات برگزیده برای برنامه ها استفاده شود.

بیشتر عناصر، کلاس‌های com.androidx.preference را زیر کلاس‌بندی می‌کنند که سفارشی‌سازی‌های CarUi را به آنها اضافه می‌کنید. در بیشتر موارد، می‌توانید از عناصر موجود در بسته com.android.car.ui.preferences با استفاده از com.android.car.PreferenceFragment استفاده کنید. PreferenceFragment همه عناصر androidx.preference را با معادل های آنها در car.ui.preferences جایگزین می کند. برای مشاهده این قابلیت‌ها در عمل، به برنامه مرجع car-ui-lib Paintbooth مراجعه کنید. مثلا:

طرح‌بندی ترجیحی رابط کاربری خودرو

شکل 1. طرح ترجیحی رابط کاربری خودرو.

انواع ترجیحات موجود

این بخش انواع ترجیحات رابط کاربری خودرو را توضیح می دهد.

PreferenceFragment

PreferenceFragment یک زیر کلاس از androidx.preference.PreferenceFragmentCompat است و کلاس پایه ای است که مشتریان باید از آن استفاده کنند. در طول تماس با setPreferenceScreen ، این کلاس به طور خودکار عناصر androidx.preference را با معادل موجود از عناصر 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

این معادل CarUi کلاس androidx.preference.Preference است که از ویژگی‌های زیر پشتیبانی می‌کند، که می‌توان با استفاده از پوشش منبع زمان اجرا (RRO) سفارشی‌سازی کرد. سایر عناصر CarUi که از یک نوع سبک CarUiPreference استفاده می کنند نیز از ویژگی های زیر پشتیبانی می کنند.

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

زیر سبک پایه com.android.car.ui.preference است که تم androidx.Preference را گسترش می دهد. کشش chevron در 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 در 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>

اگر طرح‌بندی در سبک بالا روی هم گذاشته می‌شود، مشتریان باید مطمئن شوند که طرح‌بندی جدید حداقل شناسه‌هایی را ارائه می‌کند که توسط کلاس‌های androidx مربوطه انتظار می‌رود. این در مورد سایر عناصری که از این سبک پایه استفاده می کنند نیز صدق می کند.

CarUiDropDownPreference

این معادل CarUi کلاس androidx.preference.DropDownPreference است و از سبک زیر استفاده می کند:

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

CarUiRadioButtonPreference

این زیر کلاس از androidx.preference.TwoStatePreference طرح car_ui_radio_button_preference_widget را در طول مقداردهی اولیه افزایش می دهد. اگر این طرح‌بندی در یک RRO روی هم قرار می‌گیرد، طرح‌بندی جدید باید حاوی عنصری از نوع android.widget.RadioButton ، با شناسه R.id.radio_button باشد و همچنین باید شامل عناصر و شناسه‌های مورد نیاز کلاس پایه باشد.

CarUiSwitchPreference

این معادل CarUi کلاس androidx.preference.SwitchPreference است. تفاوت در این است که وقتی این عنصر فعال نیست، یک پیام نان تست نشان داده می شود. پیام نان تست را می توان با فراخوانی متد setMessageToShowWhenDisabledPreferenceClicked در اندروید 10 و اندروید 11 سفارشی کرد. این عنصر از سبک زیر استفاده می کند:

<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

یک زیر کلاس از CarUiPreference که یک عمل ثانویه را فعال می کند. ویژگی هایی که می توان برای سفارشی کردن این عنصر استفاده کرد در زیر ارائه شده است:

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

این عنصر از همان سبک کلاس پایه استفاده می کند و به R.id.action_widget_container و android.R.id.widget_frame نیاز دارد.

CarUiDialogFragment

این کلاس همانطور که از androidx.preference.PreferenceDialogFragmentCompat با برخی از موارد اضافه شده مخصوص CarUi قرض گرفته شده است. مشتریان باید از زیر کلاس‌های این کلاس برای ارائه پلتفرم مضمون AlertDialog استفاده کنند.

PreferenceDialogFragment

یک زیر کلاس مستقیم از CarUiDialogFragment . مشتریان باید این کلاس را برای ارائه هر پلتفرم مضمونی AlertDialog زیر کلاس قرار دهند.

CarUiEditTextPreference

این معادل CarUi کلاس androidx.preference.EditTextPreference است:

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

اگر طرح‌بندی به سبک بالا روی هم گذاشته می‌شود، مشتریان باید مطمئن شوند که طرح‌بندی جدید شناسه‌های مورد انتظار کلاس androidx.preference.EditTextPreference را ارائه می‌کند.

EditTextPreferenceDialogFragment

یک زیر کلاس مستقیم از PreferenceDialogFragment . همچنین، معادل CarUi کلاس androidx.preference.PreferenceDialogFragments . مشتریان باید از این کلاس برای ارائه هر پلتفرم مضمونی AlertDialog استفاده کنند.

CarUiSeekBarDialogPreference

پیاده سازی کلاس androidx.preference.DialogPreference که عملکرد 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

قطعه ای که یک طرح بندی با SeekBar در یک گفتگو ارائه می دهد.

CarUiListPreference

معادل CarUi کلاس androidx.preference.ListPreference .

ListPreferenceFragment

قطعه ای که یک طرح بندی با androidx.preference.ListPreference در آن ارائه می دهد.

CarUiMultiSelectListPreference

معادل CarUi کلاس androidx.preference.Preference .

MultiSelectListPreferenceFragment

قطعه ای که یک طرح با com.android.car.ui.CarUiMultiSelectListPreference در آن ارائه می دهد.