התאמה אישית של ההעדפות בממשק המשתמש של הרכב

בדף הזה מוסבר איך להשתמש ברכיבים בחבילה 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. ה-drawable של 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. ההבדל הוא שכאשר האלמנט הזה לא מופעל, מוצגת הודעת טוסט. כדי להתאים אישית את הודעת ה-Toast, אפשר להפעיל את השיטה 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, שמספקת את הפונקציונליות של 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.