توضّح هذه الصفحة عملية تخصيصCarUiRecyclerView وشريط التمرير.
المتطلّبات الأساسية
تفترض هذه الصفحة معرفة حزمة APK المستهدَفة لتطبيق "تداخل الموارد أثناء التشغيل" (RRO). لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تخصيص التطبيقات.
لمحة عن CarUiRecyclerView
عند ضبط car_ui_scrollbar_enable على false في bools.xml،
لا يضخّم CarUiRecyclerView شريط التمرير. ومع ذلك، يتم تضخيم العلامة
androidx.recyclerview فقط باستخدام الأنماط القابلة للتخصيص كما هو موضّح أدناه.
عند ضبط car_ui_scrollbar_enable على true،
يضخّم CarUiRecyclerView الحاوية التي تم تثبيت شريط التمرير فيها
داخلها. في وقت لاحق، تتم أيضًا إضافة androidx.recyclerview داخل الحاوية
نفسها.
يمكن لـ CarUiRecyclerView استخدام أي محوِّل لعرض البيانات. ولكن يُنصح باستخدام CarUiListItemAdapter حيث تحدِّد مكتبة الشاسيه CarUiListItemAdapter تنسيق listItems، وبالتالي يمكن لمصنّعي المعدّات الأصلية تخصيصها. يتم تحديد تخصيص ListItems
في خيارات تخصيص
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 |
يتم احتساب الارتفاع ديناميكيًا استنادًا إلى عدد عناصر القائمة في Recycler View (RV). |
Car_ui_scrollbar_track |
الارتفاع الإجمالي الذي يحدّد الحدود التي سيتحرك فيها الإصبع |
على المصنّعين الأصليّين للأجهزة وضع ملف التنسيق هذا فوق ملف التنسيق لتخصيص شريط التمرير. يجب وضع عرض المقطع الصوتي بعناية لأنّ ذلك سيحدّد الحدود التي سيتحرك فيها إصبع الإبهام. يتم احتساب ارتفاع الصورة المصغّرة ديناميكيًا استنادًا إلى عناصر القائمة في "عرض الفيديو" الافتراضي والارتفاع لحاملي الشاشة.
يتم تضمين هذا التنسيق في حاوية CarUiRV
car_ui_recycler_view.xml فقط إذا كان car_ui_scrollbar_enable
true.
في ما يلي السمات الأخرى التي يمكن تعديلها في شريط التمرير:
<dimen name="car_ui_scrollbar_container_w>idth"@dimen/car<_ui_ma>rgi<n/dimen dimen name="car_ui_scrollb>ar_button_size"@dimen/car_u<i_touc>h_t<arget_width/dimen dimen name="car_>ui_<scroll>bar<_thumb_width"7dp/dimen dimen name=">;car<_ui_sc>rol<lbar_separator_margin"16dp/dime>n dimen name="<;car_u>i_s<crollbar_margin"@dimen/car_ui_margin/>dimen< dim>en n<ame="car_ui_scrollbar_thumb_radius"100dp/dimen item nam>e=&<quot;>car<_ui_button_disabled_alpha" format="float" type="dimen">;0.2/<item > i<tem name="car_ui_scrollbar_milliseconds_per_inch" format="float">; ty<pe=&q>uot<;dimen"150.0/item item name="car_ui_scrollbar_deceleration_times_divisor&qu>ot;< form>at=&<quot;float" type="dimen"0.45>/it<em i>tem< name="car_ui_scrollbar_decelerate_i>nte<rpolat>or_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" encodin>g<="utf-8"? RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/car_ui_margin" android:layout_height="match_pa>rent&q<uot; 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>_cente<rHorizontal="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:hapticFeedbackEnabl>ed=&qu<ot;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:layou>t<_height="7>6dp" 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
- لتحديد الموارد التي سيتمّ وضعها فوقها من خلال ميزة "الإعلانات أثناء التشغيل"، أضِف
Overlays.xml:<overlay> <item target="id/car_ui_scroll_bar" value="@id/car_>ui_sc<roll_bar"/ item target="id/car_ui_scrollbar_thumb" value>=&quo<t;@id/car_ui_scrollbar_thumb"/ item target="id/car_ui_scrollb>ar_tr<ack" value="@id/car_ui_scrollbar_track"/ item target="i>d/car<_ui_scrollbar_page_up" value="@id/car_ui_scrollbar_page_up"/ ite>m tar<get="id/car_ui_scrollbar_page_down" value="@id/car_ui_scrollbar_page_down"/ > < item t>arget="layout/car_ui_recyclerview_scrollbar" value="@layout/car_ui_recyclerview_scrollbar"/ /overlay
- إذا كان يجب تعديل عنصر قابل للرسم من النوع "أعلى" أو "أسفل" أو "زر الإبهام"، يجب أيضًا وضعه فوق العنصر الأصلي.
- إذا تم استخدام أي موارد جديدة في حزمة RRO غير متوفّرة حاليًا، يجب تحديد هذه الموارد أيضًا في حزمة APK لتطبيق RRO التي تنشئها.