Questa pagina descrive la procedura per personalizzareCarUiRecyclerView
e la barra di scorrimento.
Prerequisiti
Questa pagina presuppone la conoscenza di un APK target con overlay delle risorse di runtime (RRO). Per scoprire di più, consulta Personalizzare le app.
Informazioni su CarUiRecyclerView
Quando car_ui_scrollbar_enable
è impostato su false
in bools.xml
,
CarUiRecyclerView
non espande la barra di scorrimento. Detto questo, solo il
androidx.recyclerview
viene visualizzato con gli stili personalizzabili come definito di seguito.
Quando car_ui_scrollbar_enable
è impostato su true
,
CarUiRecyclerView
espande il contenitore con la barra di scorrimento installata al suo interno. Successivamente, androidx.recyclerview
viene aggiunto anche nello stesso
contenutore.
CarUiRecyclerView
può utilizzare qualsiasi adattatore per visualizzare i dati. Tuttavia, il consiglio è di utilizzare CarUiListItemAdapter
se la libreria del telaio definisce il layout per listItems e può quindi essere personalizzata dagli OEM. La personalizzazione per gli elementi ListItem è definita in Opzioni di personalizzazione per CarUiListItem.
Per impostazione predefinita, car_ui_scrollbar_margin
viene utilizzato come larghezza della visualizzazione della barra di scorrimento.
Questo margine viene aggiunto anche 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 la visualizzazione dei separatori.
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, all'interno della visualizzazione sono definiti quattro tipi di visualizzazioni:
Visualizzazioni | |
---|---|
Car_ui_scrollbar_page_up |
Definisce il pulsante di scorrimento verso l'alto. |
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 dell'elenco nella visualizzazione elenco (RV). |
Car_ui_scrollbar_track |
Altezza totale che definisce i limiti entro cui si muoverà il cursore. |
Gli OEM devono sovrapporre questo file di layout per personalizzare la barra di scorrimento. La visualizzazione della traccia deve essere posizionata con attenzione in quanto definisce i limiti entro cui si muoverà il cursore. L'altezza delle miniature viene calcolata dinamicamente in base agli elementi dell'elenco nella visualizzazione elenco e all'altezza delle visualizzazioni.
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 grafico Up, Down o Thumb, 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.