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