این صفحه روند سفارشی سازی CarUiRecyclerView و نوار اسکرول را شرح می دهد.
پیش نیازها
این صفحه دانش یک APK هدف همپوشانی منبع زمان اجرا (RRO) را فرض می کند. برای کسب اطلاعات بیشتر، به سفارشی کردن برنامهها مراجعه کنید.
درباره CarUiRecyclerView
وقتی car_ui_scrollbar_enable در bools.xml روی false تنظیم شده است، CarUiRecyclerView نوار پیمایش را باد نمی کند. همانطور که گفته شد، فقط androidx.recyclerview با سبک های قابل تنظیم مطابق زیر پر شده است. وقتی car_ui_scrollbar_enable روی true تنظیم شود، CarUiRecyclerView ظرف را با نوار اسکرول نصب شده در آن باد می کند. بعداً androidx.recyclerview نیز در همان ظرف اضافه شده است.
CarUiRecyclerView می تواند هر آداپتوری را برای نمایش داده ها استفاده کند. اما توصیه این است که از CarUiListItemAdapter استفاده کنید، جایی که شاسی lib طرحبندی listItems را تعریف میکند و از این رو میتواند توسط OEMها سفارشی شود. سفارشی سازی برای 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 | ارتفاع کل که محدوده حرکت انگشت شست را مشخص می کند. |
OEM ها باید این فایل طرح بندی را برای سفارشی کردن نوار اسکرول پوشش دهند. نمای مسیر باید با دقت قرار داده شود زیرا محدوده حرکت انگشت شست را مشخص می کند. ارتفاع انگشت شست به صورت پویا بر اساس موارد لیست در RV و ارتفاع بیننده ها محاسبه می شود.
فقط در صورتی که car_ui_scrollbar_enable true باشد، این طرحبندی در کانتینر CarUiRV car_ui_recycler_view.xml موجود است.
ابعاد دیگری که می توان برای نوار اسکرول تنظیم کرد عبارتند از:
<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 که ایجاد می کنید نیز تعریف شوند.