Bu sayfada CarUiRecyclerView
ve kaydırma çubuğunu özelleştirme süreci açıklanmaktadır.
Önkoşullar
Bu sayfa, çalışma zamanı kaynak yerleşimi (RRO) hedef APK'sı hakkında bilgi sahibi olunduğunu varsayar. Daha fazla bilgi edinmek için Uygulamaları özelleştirme konusuna bakın.
CarUiRecyclerView Hakkında
bools.xml
dosyasında car_ui_scrollbar_enable
false
olarak ayarlandığında, CarUiRecyclerView
kaydırma çubuğunu şişirmez. Bununla birlikte, yalnızca androidx.recyclerview
aşağıda tanımlandığı gibi özelleştirilebilir stillerle şişirilmiştir. car_ui_scrollbar_enable
true
olarak ayarlandığında, CarUiRecyclerView
içinde kaydırma çubuğu takılı olan kabı şişirir. Daha sonra androidx.recyclerview
de aynı kapsayıcıya eklenir.
CarUiRecyclerView
verileri görüntülemek için herhangi bir adaptörü kullanabilir. Ancak öneri, şasi kütüphanesinin listItems düzenini tanımladığı ve dolayısıyla OEM'ler tarafından özelleştirilebildiği CarUiListItemAdapter
kullanılmasıdır. ListItems'e yönelik özelleştirme, CarUiListItem'e yönelik özelleştirme seçeneklerinde tanımlanır.
Varsayılan olarak, kaydırma çubuğu görünümünün genişliği olarak car_ui_scrollbar_margin
kullanılır. Bu kenar boşluğu aynı zamanda CarUiRecyclerView'a android:endMargin
olarak eklenir, böylece verinin başında ve sonunda eşit kenar boşluğu olur. Geliştirici enableDivider=true
kullanmışsa OEM, bölücülerin nasıl görünmesi gerektiğini kontrol edebilir. CarUiRecyclerView
için ayarlanabilecek boyutlar şunlardır:
<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>
Kaydırma çubuğu
CarUiRV
kaydırma çubuğunun düzen dosyası car_ui_recyclerview_scrollbar.xml
dosyasında tanımlanmıştır. Toplamda bu dört görünüm görünüm içinde tanımlanır:
Görüntüleme | |
---|---|
Car_ui_scrollbar_page_up | Kaydırma çubuğunun yukarı düğmesini tanımlar. |
Car_ui_scrollbar_page_down | kaydırma çubuğunun aşağı düğmesini tanımlar. |
Car_ui_scrollbar_thumb | Yükseklik, Geri Dönüşümcü Görünümü'ndeki (RV) liste öğelerinin sayısına bağlı olarak dinamik olarak hesaplanır. |
Car_ui_scrollbar_track | Başparmağın hareket edeceği sınırları tanımlayan toplam yükseklik. |
OEM'lerin kaydırma çubuğunu özelleştirmek için bu düzen dosyasını kaplaması gerekir. Parça görünümü, başparmağın hareket edeceği sınırları tanımlayacak şekilde dikkatlice yerleştirilmelidir. Başparmak yüksekliği, RV'deki liste öğelerine ve görüntü tutucuların yüksekliğine göre dinamik olarak hesaplanır.
Bu düzen CarUiRV
konteynerine car_ui_recycler_view.xml
yalnızca car_ui_scrollbar_enable
true
ise dahil edilir.
Kaydırma çubuğu için ayarlanabilecek diğer boyutlar şunlardır:
<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>
Örnek
Örneğin, ekranın alt kısmında Yukarı ve Aşağı okunu bir araya getirmek için:
- Yer paylaşımı
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 tarafından kaplanacak kaynakları tanımlamak için
Overlays.xml
ekleyin:<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>
- Yukarı, Aşağı veya başparmak çiziminin güncellenmesi gerekiyorsa bunların da üst üste bindirilmesi gerekir.
- RRO paketinde halihazırda mevcut olmayan yeni kaynaklar kullanılıyorsa bu kaynakların oluşturduğunuz RRO APK'sında da tanımlanması gerekir.