התאמה אישית של CarUiRecyclerView

בדף הזה מתואר התהליך של התאמה אישית של CarUiRecyclerView ושל סרגל הגלילה.

דרישות מוקדמות

בדף הזה נדרש ידע על קובץ APK יעד של שכבת-על של משאבים בסביבת זמן ריצה (RRO). מידע נוסף זמין במאמר התאמה אישית של אפליקציות.

מידע על CarUiRecyclerView

כשהערך של car_ui_scrollbar_enable מוגדר כ-false ב-bools.xml, CarUiRecyclerView לא מרחיב את פס ההזזה. עם זאת, רק השדה androidx.recyclerview מנופח בסגנונות שניתן להתאים אישית, כפי שמוגדר בהמשך. כשהערך של car_ui_scrollbar_enable מוגדר כ-true, ה-CarUiRecyclerView מרחיב את המאגר עם סרגל הגלילה שמותקן בו. מאוחר יותר, גם androidx.recyclerview מתווסף לאותו מאגר.

CarUiRecyclerView יכול לקבל כל מתאם כדי להציג את הנתונים. עם זאת, מומלץ להשתמש ב-CarUiListItemAdapter, שבו הספרייה של המארז מגדירה את הפריסה של listItems, ולכן יצרני ציוד מקורי יכולים להתאים אותה אישית. ההתאמה האישית של ListItems מוגדרת בקטע אפשרויות התאמה אישית של CarUiListItem.

כברירת מחדל, car_ui_scrollbar_margin משמש כרוחב התצוגה של פס ההזזה. השוליים האלה מתווספים גם כ-android:endMargin של CarUiRecyclerView, כך שיש שוליים שווים בתחילת הנתונים ובסוף הנתונים. אם המפתח השתמש ב-enableDivider=true, יצרן הציוד המקורי יכול לקבוע איך המחיצות יופיעו. המאפיינים שאפשר לשנות ב-CarUiRecyclerView הם:

  <dimen name="car_ui_recyclerview_divider_height">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_start_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_end_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_top_margin">0dp</dimen>
  <dimen name="car_ui_recyclerview_divider_bottom_margin">0dp</dimen>

סרגל הגלילה

קובץ הפריסה של CarUiRV scrollbar מוגדר ב-car_ui_recyclerview_scrollbar.xml. סה"כ, ארבע התצוגות הבאות מוגדרות בתצוגה:

צפיות
Car_ui_scrollbar_page_up הגדרת הלחצן למעלה בסרגל הגלילה.
Car_ui_scrollbar_page_down מגדיר את לחצן למטה בסרגל הגלילה.
Car_ui_scrollbar_thumb הגובה מחושב באופן דינמי בהתאם למספר הפריטים ברשימה בתצוגת Recycler (RV).
Car_ui_scrollbar_track הגובה הכולל שמגדיר את הגבולות שבהם האגודל יזוז.

יצרני ציוד מקורי צריכים להוסיף שכבה לקובץ הפריסה הזה כדי להתאים אישית את פס ההזזה. חשוב למקם את תצוגת הטראק בזהירות, כי היא תגדיר את הגבולות שבהם האגודל יזוז. גובה התמונה הממוזערת מחושב באופן דינמי על סמך הפריטים ברשימה ב-RV ועל סמך הגובה של הצופים.

הפריסה הזו נכללת במאגר CarUiRV car_ui_recycler_view.xml רק אם הערך של car_ui_scrollbar_enable הוא true.

מאפיינים אחרים שאפשר לשנות בהתאם לסרגל הגלילה הם:

  <dimen name="car_ui_scrollbar_container_width">@dimen/car_ui_margin</dimen>
  <dimen name="car_ui_scrollbar_button_size">@dimen/car_ui_touch_target_width</dimen>
  <dimen name="car_ui_scrollbar_thumb_width">7dp</dimen>
  <dimen name="car_ui_scrollbar_separator_margin">16dp</dimen>
  <dimen name="car_ui_scrollbar_margin">@dimen/car_ui_margin</dimen>
  <dimen name="car_ui_scrollbar_thumb_radius">100dp</dimen>

  <item name="car_ui_button_disabled_alpha" format="float" type="dimen">0.2</item>
  <item name="car_ui_scrollbar_milliseconds_per_inch" format="float" type="dimen">150.0</item>
  <item name="car_ui_scrollbar_deceleration_times_divisor" format="float" type="dimen">0.45</item>
  <item name="car_ui_scrollbar_decelerate_interpolator_factor" format="float" type="dimen">1.8</item>

  <dimen name="car_ui_scrollbar_padding_start">0dp</dimen>
  <dimen name="car_ui_scrollbar_padding_end">0dp</dimen>

דוגמה

לדוגמה, כדי להעביר את החץ למעלה ואת החץ למטה יחד לתחתית המסך:

  1. שכבת-על car_ui_recyclerview_scrollbar.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="@dimen/car_ui_margin"
        android:layout_height="match_parent"
        android:id="@+id/car_ui_scroll_bar">
    
        <!-- View height is dynamically calculated during layout. -->
        <View
            android:id="@+id/car_ui_scrollbar_thumb"
            android:layout_width="7dp"
            android:layout_height="20dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/car_ui_recyclerview_scrollbar_thumb"/>
    
        <View
            android:id="@+id/car_ui_scrollbar_track"
            android:layout_width="10dp"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp"
            android:layout_centerHorizontal="true"
            android:layout_above="@+id/car_ui_scrollbar_page_up"/>
    
        <ImageView
            android:id="@+id/car_ui_scrollbar_page_up"
            android:layout_width="76dp"
            android:layout_height="76dp"
            android:focusable="false"
            android:hapticFeedbackEnabled="false"
            android:src="@drawable/car_ui_recyclerview_ic_up"
            android:scaleType="centerInside"
            android:layout_centerHorizontal="true"
            android:layout_above="@+id/car_ui_scrollbar_page_down"/>
    
        <ImageView
            android:id="@+id/car_ui_scrollbar_page_down"
            android:layout_width="76dp"
            android:layout_height="76dp"
            android:focusable="false"
            android:hapticFeedbackEnabled="false"
            android:src="@drawable/car_ui_recyclerview_ic_down"
            android:scaleType="centerInside"
            android:layout_centerHorizontal="true"
          android:layout_alignParentBottom="true"/>
    </RelativeLayout>
  2. כדי להגדיר את המשאבים שיוצגו בשכבה העליונה על ידי RRO, מוסיפים את Overlays.xml:
    <overlay>
        <item target="id/car_ui_scroll_bar" value="@id/car_ui_scroll_bar"/>
        <item target="id/car_ui_scrollbar_thumb" value="@id/car_ui_scrollbar_thumb"/>
        <item target="id/car_ui_scrollbar_track" value="@id/car_ui_scrollbar_track"/>
        <item target="id/car_ui_scrollbar_page_up" value="@id/car_ui_scrollbar_page_up"/>
        <item target="id/car_ui_scrollbar_page_down" value="@id/car_ui_scrollbar_page_down"/>
        <item target="layout/car_ui_recyclerview_scrollbar" value="@layout/car_ui_recyclerview_scrollbar"/>
    </overlay>
  3. אם צריך לעדכן את התמונה הניתנת לציור של 'העלאה', 'ירידה' או 'אגודל', צריך להוסיף אותן גם לשכבה העליונה.
  4. אם אתם משתמשים בחבילת RRO במשאבים חדשים שעדיין לא קיימים, צריך להגדיר את המשאבים האלה גם בקובץ ה-APK של ה-RRO שיצרתם.