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

בדף הזה נסביר איך להשתמש ברכיבים ולהתאים אותם אישית חבילת 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 כיתות. הדבר נכון גם לרכיבים אחרים שמשתמשים את הסגנון הבסיסי הזה.

העדפה לגבי CarUiDropDown

זהו המקביל מ-CarUi ל-androidx.preference.DropDownPreference ולהשתמש בסגנון הבא:

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

העדפת לחצן רדיו CarUiRadio

המחלקה המשנית הזו של androidx.preference.TwoStatePreference ניפוח של הפריסה car_ui_radio_button_preference_widget במהלך באתחול. אם הפריסה הזו חופפת לשכבת-על של RRO, על הפריסה החדשה מכילים רכיב מסוג android.widget.RadioButton עם מזהה R.id.radio_button וצריך לכלול גם רכיבים ומזהים אחרים שנדרשת למחלקת הבסיס.

CarUiSwitchPreference

זהו הערך המקביל של CarUi למחלקה androidx.preference.SwitchPreference. ההבדל הוא שכשהרכיב הזה לא מופעל, מוצגת הודעת טוסט. לחיים אפשר להתאים אישית את ההודעה על ידי שליחת קריאה method אחת (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>

CarUiTwoActionPreferences

תת-מחלקה של 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 class:

<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 בקובץ.

CarUiMultiSelectListPreferences

המקבילה ב-CarUi למחלקה androidx.preference.Preference.

MultiSelectListPreferenceFragment

מקטע שמספק פריסה עם com.android.car.ui.CarUiMultiSelectListPreference בקובץ.