התאמה אישית של 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 כאשר מסגרת השלדה מגדירה את עבור רשימות פריטים, ולכן יצרני ציוד מקורי יכולים להתאים אותה אישית. ההתאמה האישית של פריטי ListItem מוגדרות בהתאמה אישית לאפשרויות של CarUiListItem.

כברירת מחדל, הרוחב של car_ui_scrollbar_margin מוגדר כרוחב התצוגה של סרגל הגלילה. השוליים האלה מתווספים גם כ-android:endMargin של CarUiRecyclerView יש שוליים זהים בהתחלה ובסוף של הנתונים. אם המפתח השתמש enableDivider=true לאחר מכן, ה-OEM יוכל לקבוע איך המחיצות יופיעו. המידות שאפשר להתאים עבור 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 מוגדר ב car_ui_recyclerview_scrollbar.xml. בסך הכל, ארבע הצפיות האלה מוגדרת בתצוגה:

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

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

הפריסה הזו כלולה במאגר '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 נעשה שימוש במשאבים חדשים שעדיין לא קיימים, אז יש להגדיר את המשאבים האלה גם ב-RRO APK שאתם יוצרים.