CarUiRecyclerView'u özelleştir

Bu sayfadaCarUiRecyclerView ve kaydırmayı özelleştirme süreci açıklanmaktadır çubuk.

Ön koşullar

Bu sayfada bir çalışma zamanı kaynak yer paylaşımı (RRO) hedef APK'sının bilindiği varsayılmıştır. Öğrenmek için daha fazla bilgi için Uygulamaları özelleştirme bölümüne bakın.

CarUiRecyclerView hakkında

car_ui_scrollbar_enable, bools.xml içinde false olarak ayarlandığında CarUiRecyclerView, kaydırma çubuğunu artırmaz. Bununla birlikte, androidx.recyclerview, aşağıda tanımlanan özelleştirilebilir stillerle şişirilmiş. car_ui_scrollbar_enable, true olarak ayarlandığında CarUiRecyclerView, kaydırma çubuğu yüklü kapsayıcıyı şişirir bir bilgidir. Daha sonra androidx.recyclerview, aynı emin olun.

CarUiRecyclerView, verileri görüntülemek için herhangi bir bağdaştırıcıyı alabilir. Ancak CarUiListItemAdapter kullanılması önerilir. Burada şasi kitaplığı listItems için düzen oluşturur ve dolayısıyla OEM'ler tarafından özelleştirilebilir. ListItems için özelleştirme Özelleştirme CarUiListItem için seçenekler.

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, CarUiRecyclerView'a android:endMargin olarak da eklendiğinden verilerin başında ve sonunda eşit bir marj bulunduğunu unutmayın. Geliştirici, enableDivider=true, OEM ayırıcıların nasıl görünmesi gerektiğini kontrol edebilir. CarUiRecyclerView için düzenlenebilecek 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ğu için düzen dosyası şurada tanımlanır: car_ui_recyclerview_scrollbar.xml. Bu dört görünüm toplamda görünüm içinde 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, açılır menüdeki liste öğelerinin sayısına bağlı olarak, Recycler View (Karavan) seçeneğini tıklayın.
Car_ui_scrollbar_track Başparmağın hareket edeceği sınırları tanımlayan toplam yükseklik.

Kaydırma çubuğunu özelleştirmek için OEM'ler bu düzen dosyasını yer paylaşımlı olarak kullanmalıdır. Parça görünümü başparmağın hareket edeceği sınırları belirleyecek şekilde dikkatli bir şekilde yerleştirilmelidir. Küçük resim yüksekliği, karavandaki liste öğelerine ve yüksekliğine göre dinamik olarak hesaplanır uzlaşmaya vardık.

Bu düzen, CarUiRV kapsayıcısına dahil car_ui_recycler_view.xml yalnızca car_ui_scrollbar_enable true.

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 hem Yukarı hem de Aşağı oku bir araya getirmek için:

  1. 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>
    
  2. DOO'nun yer alacağı 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>
    
  3. Yukarı, aşağı veya baş parmakla çekilebilir öğelerin güncellenmesi gerekiyorsa bunlar da yer paylaşımlı olarak kullanılmalıdır.
  4. RRO paketinde henüz mevcut olmayan yeni kaynaklar kullanılırsa bu kaynaklar, oluşturduğunuz RRO APK'sında da tanımlanmalıdır.