Bu sayfada,CarUiRecyclerView
ve kaydırma çubuğunu özelleştirme işlemi açıklanmaktadır.
Ön koşullar
Bu sayfada, çalışma zamanında kaynak yer paylaşımı (RRO) hedef APK'sı hakkında bilgi sahibi olduğunuz varsayılmaktadır. Daha fazla bilgi edinmek için Uygulamaları özelleştirme başlıklı makaleyi inceleyin.
CarUiRecyclerView hakkında
bools.xml
içinde 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ığı şekilde özelleştirilebilir stillerle doldurulur.
car_ui_scrollbar_enable
true
olarak ayarlandığında CarUiRecyclerView
, kapsayıcıyı içine kaydırma çubuğu yerleştirilmiş şekilde şişirir. Daha sonra androidx.recyclerview
de aynı kapsayıcıya eklenir.
CarUiRecyclerView
, verileri görüntülemek için herhangi bir adaptör alabilir. Ancak öneri, şasi kitaplığının listItems için düzeni tanımladığı ve dolayısıyla OEM'ler tarafından özelleştirilebildiği CarUiListItemAdapter
kullanmaya yöneliktir. ListItems için özelleştirme, CarUiListItem için özelleştirme seçenekleri bölümünde tanımlanır.
Varsayılan olarak, kaydırma çubuğu görünümünün genişliği için car_ui_scrollbar_margin
kullanılır.
Bu kenar boşluğu, verilerin başlangıcında ve sonunda eşit kenar boşluğu olması için CarUiRecyclerView'in android:endMargin
olarak da eklenir. Geliştirici enableDivider=true
kullanıyorsa OEM, bölücülerin nasıl görüneceğini kontrol edebilir.
CarUiRecyclerView
için ayarlanabilen boyutlar:
<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ğu için düzen dosyası car_ui_recyclerview_scrollbar.xml
içinde tanımlanır. Görüntüleme içinde toplam dört görünüm tanımlanır:
Görüntüleme sayısı | |
---|---|
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üşüm Görünümü'ndeki (RV) liste öğelerinin sayısına göre dinamik olarak hesaplanır. |
Car_ui_scrollbar_track |
Başparmak kaydırma çubuğunun hareket edeceği sınırları tanımlayan toplam yükseklik. |
OEM'ler, kaydırma çubuğunu özelleştirmek için bu düzen dosyasını yerleştirmelidir. Başparmak kaydırma çubuğunun hareket edeceği sınırları tanımladığı için parça görünümü dikkatlice yerleştirilmelidir. Küçük resim yüksekliği, RV'deki liste öğelerine ve görüntüleyen kullanıcıların yüksekliğine göre dinamik olarak hesaplanır.
Bu düzen, car_ui_scrollbar_enable
true
ise yalnızca CarUiRV
kapsayıcısınacar_ui_recycler_view.xml
dahil edilir.
Kaydırma çubuğu için ayarlanabilen 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, hem yukarı hem de aşağı oku ekranın alt kısmına 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 yer paylaşımı yapılacak 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 çizilebilir öğelerinin güncellenmesi gerekiyorsa bunlar da yer paylaşımına dahil edilmelidir.
- RRO paketinde daha önce mevcut olmayan yeni kaynaklar kullanılıyorsa bu kaynaklar, oluşturduğunuz RRO APK'sında da tanımlanmalıdır.