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

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

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 בתוכו.