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_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
Ö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" 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
- RRO tarafından yer paylaşımı yapılacak kaynakları tanımlamak için
Overlays.xmlekleyin:<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
- 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.