تخصيص 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 حيث تُحدد chassis lib لعناصر القائمة، وبالتالي يمكن تخصيصها بواسطة المصنّعين الأصليين للأجهزة. تخصيص عناصر القائمة محددة في التخصيص الخيارات لـ 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" في 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 غير موجودة بالفعل، فحينئذٍ كما يجب تحديد هذه الموارد في حزمة APK التي تنشئها في RRO.