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

توضح هذه الصفحة كيفية استخدام العناصر وتخصيصها في حزمة 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 في 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 .

تحريرTextPreferenceDialogFragment

فئة فرعية مباشرة من 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 .