התאם אישית את CarUiRecyclerView

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

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

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

אודות CarUiRecyclerView

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

CarUiRecyclerView יכול לקחת כל מתאם כדי להציג את הנתונים. אבל ההמלצה היא להשתמש CarUiListItemAdapter שבו המארז lib מגדיר את הפריסה של listItems ולכן ניתן להתאים אישית על ידי יצרני OEM. ההתאמה האישית עבור ListItems מוגדרת באפשרויות התאמה אישית עבור 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 הגובה מחושב באופן דינמי בהתאם למספר פריטי הרשימה ב-Recycler View (RV).
Car_ui_scrollbar_track גובה כולל המגדיר את הגבולות שבהם האגודל ינוע.

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