تخصيص الإعدادات المفضّلة لواجهة مستخدم السيارة

توضّح هذه الصفحة كيفية استخدام العناصر وتخصيصها في حزمة 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 أثناء car_ui_radio_button_preference_widget. إذا كان يتمّ تراكب هذا التنسيق في عرض إعلان قابل للإزالة، يجب أن يحتوي التنسيق الجديد على عنصر من النوع android.widget.RadioButton، مع معرّف R.id.radio_button، ويجب أن يحتوي أيضًا على عناصر ومعرّفات أخرى تتطلّبها الفئة الأساسية.

CarUiSwitchPreference

هذا هو مكافئ CarUi لفئة androidx.preference.SwitchPreference. الفرق هو أنّه عندما لا يكون هذا العنصر مفعّلاً، يتم عرض رسالة مصغّرة. يمكن تخصيص رسالة الرسالة المنبثقة من خلال استدعاء setMessageToShowWhenDisabledPreferenceClicked في Android 10 وAndroid 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، التي توفّر وظائف شريط التمرير:

<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

جزء يقدّم تنسيقًا يتضمّن شريط تمرير في مربّع حوار

CarUiListPreference

مكافئ CarUi لفئة androidx.preference.ListPreference.

ListPreferenceFragment

مقتطف يقدّم تنسيقًا يحتوي على androidx.preference.ListPreference

CarUiMultiSelectListPreference

مكافئ CarUi لفئة androidx.preference.Preference.

MultiSelectListPreferenceFragment

مقتطف يقدّم تنسيقًا يحتوي على com.android.car.ui.CarUiMultiSelectListPreference