این صفحه روند سفارشی سازی 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 که ایجاد می کنید نیز تعریف شوند.