توضح هذه الصفحة عملية تخصيص 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>
مثال
على سبيل المثال، لتجميع السهمين لأعلى ولأسفل معًا في أسفل الشاشة:
- تراكب
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>
- لتحديد الموارد التي سيتم تراكبها بواسطة 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>
- إذا كان من الضروري تحديث الرسوم لأعلى أو لأسفل أو للإبهام، فيجب أن يتم تراكبها أيضًا.
- إذا تم استخدام أي موارد جديدة في حزمة RRO غير موجودة بالفعل، فيجب أيضًا تحديد هذه الموارد في RRO APK الذي تقوم بإنشائه.