تخصيص 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 حيث يحدد lib الهيكل تخطيط listItems وبالتالي يمكن تخصيصه بواسطة مصنعي المعدات الأصلية. يتم تعريف التخصيص لـ 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 (RV).
Car_ui_scrollbar_track الارتفاع الإجمالي الذي يحدد الحدود التي سيتحرك فيها الإبهام.

يجب على مصنعي المعدات الأصلية تراكب ملف التخطيط هذا لتخصيص شريط التمرير. يجب وضع عرض المسار بعناية لأن ذلك من شأنه أن يحدد الحدود التي سيتحرك فيها الإبهام. يتم حساب ارتفاع الإبهام ديناميكيًا استنادًا إلى عناصر القائمة الموجودة في RV وارتفاع حاملي العرض.

يتم تضمين هذا التخطيط في حاوية CarUiRV car_ui_recycler_view.xml فقط إذا كانت true car_ui_scrollbar_enable صحيحة.

الأبعاد الأخرى التي يمكن تعديلها لشريط التمرير هي:

  <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 الذي تقوم بإنشائه.