In questa pagina viene descritta la procedura di personalizzazione diCarUiRecyclerView
e dello scorrimento
.
Prerequisiti
Questa pagina presuppone la conoscenza di un APK target dell'overlay delle risorse di runtime (RRO). Per ulteriori informazioni vedi Personalizzare le app.
Informazioni su CarUiRecyclerView
Quando il criterio car_ui_scrollbar_enable
è impostato su false
in bools.xml
,
CarUiRecyclerView
non gonfia la barra di scorrimento. Detto questo, solo
androidx.recyclerview
presenta stili personalizzabili come definiti di seguito.
Quando il criterio car_ui_scrollbar_enable
è impostato su true
,
CarUiRecyclerView
gonfia il contenitore con la barra di scorrimento installata
al suo interno. All'interno dello stesso viene aggiunto anche androidx.recyclerview
successivo
containerizzato.
CarUiRecyclerView
può utilizzare qualsiasi adattatore per visualizzare i dati. Ma
si consiglia di utilizzare CarUiListItemAdapter
dove la libreria chassis definisce
per listItems e pertanto può essere personalizzato dagli OEM. Personalizzazione di ListItem
sono definiti nella sezione Personalizzazione
opzioni per CarUiListItem.
Per impostazione predefinita, come larghezza della visualizzazione della barra di scorrimento viene utilizzata car_ui_scrollbar_margin
.
Questo margine viene anche aggiunto come android:endMargin
di CarUiRecyclerView in modo che
il margine sia uguale all'inizio
e alla fine dei dati. Se lo sviluppatore avesse utilizzato
enableDivider=true
, l'OEM può controllare l'aspetto dei divisori.
Le dimensioni che possono essere regolate per CarUiRecyclerView
sono:
<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>
Barra di scorrimento
Il file di layout per la barra di scorrimento CarUiRV
è definito in
car_ui_recyclerview_scrollbar.xml
. In totale, queste quattro visualizzazioni sono
definiti nella vista:
Visualizzazioni | |
---|---|
Car_ui_scrollbar_page_up |
Definisce il pulsante su della barra di scorrimento. |
Car_ui_scrollbar_page_down |
definisce il pulsante giù della barra di scorrimento. |
Car_ui_scrollbar_thumb |
L'altezza viene calcolata in modo dinamico in base al numero di voci di elenco nella Vista riciclatore (RV). |
Car_ui_scrollbar_track |
Altezza totale che definisce i limiti di spostamento del pollice. |
Gli OEM devono sovrapporre questo file di layout per personalizzare la barra di scorrimento. La visualizzazione del percorso deve essere posizionato attentamente, in quanto ciò definirebbe i limiti di spostamento del pollice. L'altezza pollice viene calcolata in modo dinamico in base alle voci dell'elenco nel camper e all'altezza dei visualizzatori.
Questo layout è incluso nel contenitore CarUiRV
car_ui_recycler_view.xml
solo se car_ui_scrollbar_enable
è true
.
Altre dimensioni che possono essere regolate per la barra di scorrimento sono:
<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>
Esempio
Ad esempio, per unire le frecce su e giù nella parte inferiore dello schermo:
- 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>
- Per definire le risorse da sovrapporre all'RRO, aggiungi
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>
- Se è necessario aggiornare un elemento drawable Su, Giù o con il pollice, anche questi devono essere sovrapposti.
- Se nel pacchetto RRO vengono utilizzate nuove risorse che non esistono già, queste risorse devono essere definite anche nell'APK RRO che crei.