Passen Sie CarUiRecyclerView an

Auf dieser Seite wird der Vorgang zum Anpassen CarUiRecyclerView und der Bildlaufleiste beschrieben.

Voraussetzungen

Diese Seite setzt Kenntnisse über ein Runtime Resource Overlay (RRO)-Ziel-APK voraus. Weitere Informationen finden Sie unter „Apps anpassen“ .

Über CarUiRecyclerView

Wenn car_ui_scrollbar_enable in bools.xml auf false gesetzt ist, vergrößert CarUiRecyclerView die Bildlaufleiste nicht. Allerdings ist nur die androidx.recyclerview mit anpassbaren Stilen wie unten definiert ausgestattet. Wenn car_ui_scrollbar_enable auf true gesetzt ist, bläht CarUiRecyclerView den Container mit der darin installierten Bildlaufleiste auf. Später wird auch androidx.recyclerview im selben Container hinzugefügt.

CarUiRecyclerView kann jeden Adapter zum Anzeigen der Daten verwenden. Die Empfehlung lautet jedoch, CarUiListItemAdapter zu verwenden, wobei die Chassis-Bibliothek das Layout für listItems definiert und daher von OEMs angepasst werden kann. Die Anpassungen für ListItems werden in den Anpassungsoptionen für CarUiListItem definiert.

Standardmäßig wird car_ui_scrollbar_margin als Breite der Bildlaufleistenansicht verwendet. Dieser Rand wird auch als android:endMargin von CarUiRecyclerView hinzugefügt, sodass am Anfang und Ende der Daten der gleiche Rand vorhanden ist. Wenn der Entwickler enableDivider=true verwendet hat, kann der OEM steuern, wie die Teiler angezeigt werden sollen. Dimensionen, die für CarUiRecyclerView angepasst werden können, sind:

  <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>

Scrollleiste

Die Layoutdatei für CarUiRV Bildlaufleiste ist in car_ui_recyclerview_scrollbar.xml definiert. Insgesamt sind diese vier Ansichten innerhalb der Ansicht definiert:

Ansichten
Car_ui_scrollbar_page_up Definiert die Aufwärtsschaltfläche der Bildlaufleiste.
Car_ui_scrollbar_page_down Definiert die Abwärtstaste der Bildlaufleiste.
Car_ui_scrollbar_thumb Die Höhe wird dynamisch abhängig von der Anzahl der Listenelemente in der Recycler-Ansicht (RV) berechnet.
Car_ui_scrollbar_track Gesamthöhe, die die Grenzen definiert, in denen sich der Daumen bewegt.

OEMs sollten diese Layoutdatei überlagern, um die Bildlaufleiste anzupassen. Die Spuransicht sollte sorgfältig platziert werden, da sie die Grenzen definiert, in denen sich der Daumen bewegt. Die Daumenhöhe wird dynamisch basierend auf den Listenelementen im RV und der Höhe der Viewholder berechnet.

Dieses Layout ist nur dann im CarUiRV Container car_ui_recycler_view.xml enthalten, wenn car_ui_scrollbar_enable true ist.

Weitere Abmessungen, die für die Bildlaufleiste angepasst werden können, sind:

  <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>

Beispiel

So bringen Sie beispielsweise den Aufwärts- und den Abwärtspfeil am unteren Bildschirmrand zusammen:

  1. 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>
    
  2. Um die Ressourcen zu definieren, die vom RRO überlagert werden sollen, fügen Sie 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>
    
    hinzu
  3. Wenn ein Up-, Down- oder Thumb-Drawable aktualisiert werden muss, sollten diese ebenfalls überlagert werden.
  4. Wenn im RRO-Paket neue Ressourcen verwendet werden, die noch nicht vorhanden sind, sollten diese Ressourcen auch in der von Ihnen erstellten RRO-APK definiert werden.