이 페이지에서는 CarUiRecyclerView
및 스크롤 막대를 사용자 정의하는 프로세스를 설명합니다.
전제 조건
이 페이지에서는 런타임 리소스 오버레이(RRO) 대상 APK에 대한 지식이 있다고 가정합니다. 자세한 내용은 앱 사용자 정의를 참조하십시오.
CarUiRecyclerView 정보
bools.xml
에서 car_ui_scrollbar_enable
false
로 설정하면 CarUiRecyclerView
스크롤 막대를 확장하지 않습니다. 즉, androidx.recyclerview
만 아래 정의된 맞춤설정 가능한 스타일로 확장됩니다. car_ui_scrollbar_enable
이 true
로 설정되면 CarUiRecyclerView
스크롤 막대가 설치된 컨테이너를 확장합니다. 나중에 androidx.recyclerview
도 동일한 컨테이너 내에 추가됩니다.
CarUiRecyclerView
모든 어댑터를 사용하여 데이터를 표시할 수 있습니다. 그러나 섀시 lib가 listItems에 대한 레이아웃을 정의하므로 OEM이 사용자 정의할 수 있는 CarUiListItemAdapter
사용하는 것이 좋습니다. ListItems에 대한 사용자 정의는 CarUiListItem에 대한 사용자 정의 옵션 에 정의되어 있습니다.
기본적으로 car_ui_scrollbar_margin
스크롤바 뷰의 너비로 사용됩니다. 이 여백은 CarUiRecyclerView의 android:endMargin
으로도 추가되므로 데이터의 시작과 끝 부분에 동일한 여백이 있습니다. 개발자가 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 View(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>
- Up, Down 또는 Thumb 드로어블을 업데이트해야 하는 경우 오버레이되어야 합니다.
- 아직 존재하지 않는 RRO 패키지에 새로운 리소스가 사용되는 경우 이러한 리소스는 생성한 RRO APK에도 정의되어야 합니다.