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:
- 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>
- 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 - Wenn ein Up-, Down- oder Thumb-Drawable aktualisiert werden muss, sollten diese ebenfalls überlagert werden.
- 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.