Halaman ini menjelaskan proses penyesuaian CarUiRecyclerView
dan scroll
.
Prasyarat
Halaman ini mengasumsikan pengetahuan tentang APK target runtime resource overlay (RRO). Untuk mempelajari lainnya, lihat Menyesuaikan aplikasi.
Tentang CarUiRecyclerView
Jika car_ui_scrollbar_enable
ditetapkan ke false
dalam bools.xml
,
CarUiRecyclerView
tidak meng-inflate scrollbar. Meskipun begitu, hanya
androidx.recyclerview
di-inflate dengan gaya yang dapat disesuaikan seperti yang ditentukan di bawah.
Jika car_ui_scrollbar_enable
ditetapkan ke true
,
CarUiRecyclerView
meng-inflate container dengan scrollbar terinstal
yang ada di dalamnya. Nantinya, androidx.recyclerview
juga ditambahkan dalam
container.
CarUiRecyclerView
dapat mengambil adaptor apa pun untuk menampilkan data. Tapi
yang direkomendasikan adalah gunakan CarUiListItemAdapter
saat lib sasis menentukan
untuk listItems sehingga bisa
disesuaikan oleh OEM. Penyesuaian untuk ListItems
ditentukan di Penyesuaian
opsi 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 pengembang telah menggunakan
enableDivider=true
maka 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>
Bilah gulir
File tata letak untuk scrollbar CarUiRV
ditentukan di dalam
car_ui_recyclerview_scrollbar.xml
. Secara total, keempat pandangan ini
yang ditentukan dalam tampilan:
View | |
---|---|
Car_ui_scrollbar_page_up |
Mendefinisikan tombol atas pada scrollbar. |
Car_ui_scrollbar_page_down |
mendefinisikan tombol bawah dari scrollbar. |
Car_ui_scrollbar_thumb |
Tinggi dihitung secara dinamis bergantung pada jumlah item daftar dalam Recycler View (RV). |
Car_ui_scrollbar_track |
Tinggi total yang menentukan batas tempat ibu jari akan bergerak. |
OEM harus menempatkan file tata letak ini untuk menyesuaikan scrollbar. Tampilan jalur seharusnya ditempatkan dengan hati-hati karena akan menentukan batas ke mana ibu jari akan bergerak. Tinggi jempol dihitung secara dinamis berdasarkan item daftar di RV dan tingginya dari pemangku kepentingan.
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_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>
Contoh
Misalnya, untuk menyatukan panah Atas dan Bawah di bagian bawah layar:
- Overlay
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>
- Untuk menentukan resource yang akan di-overlay oleh RRO, tambahkan
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>
- Jika drawable Atas, Bawah, atau thumb harus diperbarui, mereka juga harus dihamparkan.
- Jika ada sumber daya baru yang digunakan dalam paket RRO yang belum ada, maka sumber daya ini juga harus didefinisikan dalam RRO APK yang Anda buat.