Halaman ini menjelaskan proses penyesuaianCarUiRecyclerView dan panel
scroll.
Prasyarat
Halaman ini mengasumsikan pengetahuan tentang APK target runtime resource overlay (RRO). Untuk mempelajari lebih lanjut, lihat Menyesuaikan aplikasi.
Tentang CarUiRecyclerView
Jika car_ui_scrollbar_enable ditetapkan ke false di bools.xml,
CarUiRecyclerView tidak akan meng-inflate scrollbar. Namun, hanya
androidx.recyclerview yang di-inflate dengan gaya yang dapat disesuaikan seperti yang ditentukan di bawah.
Jika car_ui_scrollbar_enable ditetapkan ke true,
CarUiRecyclerView akan meng-inflate penampung dengan scrollbar yang diinstal
di dalamnya. Kemudian, androidx.recyclerview juga ditambahkan dalam penampung
yang sama.
CarUiRecyclerView dapat menggunakan adaptor apa pun untuk menampilkan data. Namun,
rekomendasinya adalah menggunakan CarUiListItemAdapter dengan lib sasis menentukan
tata letak untuk listItems sehingga dapat disesuaikan oleh OEM. Penyesuaian untuk ListItems
ditentukan dalam Opsi
penyesuaian untuk CarUiListItem.
Secara default, car_ui_scrollbar_margin digunakan sebagai lebar tampilan scrollbar.
Margin ini juga ditambahkan sebagai android:endMargin dari CarUiRecyclerView sehingga
ada margin yang sama di awal dan akhir data. Jika developer telah menggunakan
enableDivider=true, OEM dapat mengontrol tampilan pemisah.
Dimensi yang dapat disesuaikan untuk CarUiRecyclerView adalah:
<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>
Scroll bar
File tata letak untuk scrollbar CarUiRV ditentukan di
car_ui_recyclerview_scrollbar.xml. Secara total, empat tampilan ini
ditentukan dalam tampilan:
| View | |
|---|---|
Car_ui_scrollbar_page_up |
Menentukan tombol atas scrollbar. |
Car_ui_scrollbar_page_down |
menentukan tombol bawah scrollbar. |
Car_ui_scrollbar_thumb |
Tinggi dihitung secara dinamis bergantung pada jumlah item daftar di Recycler View (RV). |
Car_ui_scrollbar_track |
Total tinggi yang menentukan batas tempat ibu jari akan bergerak. |
OEM harus menempatkan file tata letak ini untuk menyesuaikan scrollbar. Tampilan trek harus ditempatkan dengan cermat karena akan menentukan batas tempat ibu jari akan bergerak. Tinggi thumb dihitung secara dinamis berdasarkan item daftar di RV dan tinggi holder tampilan.
Tata letak ini disertakan dalam penampung CarUiRV
car_ui_recycler_view.xml hanya jika car_ui_scrollbar_enable
adalah true.
Dimensi lain yang dapat disesuaikan untuk scrollbar adalah:
<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
Contoh
Misalnya, untuk menggabungkan panah Atas dan Bawah di bagian bawah layar:
- Overlay
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
- Untuk menentukan resource yang akan ditempatkan oleh RRO, tambahkan
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
- Jika drawable Atas, Bawah, atau thumb harus diperbarui, drawable tersebut juga harus ditempatkan.
- Jika ada resource baru yang digunakan dalam paket RRO yang belum ada, resource ini juga harus ditentukan dalam APK RRO yang Anda buat.