Come gestire il fast-scroller su Lollipop 5.1?

background

Ho fatto una piccola libreria, che mostra come simulare lo stile dell'applicazione di contatti di azioni di Android Lollipop, qui .

Il problema

Sembra che su Android 5.1, il scroller veloce appare molto diverso da quello precedente, ed è troppo vicino alla destra, quindi è difficile utilizzarlo.

  • Android: Come posso get il nome dell'applicazione corrente aperta sullo schermo
  • Gmail tablet come elementi di Actionbar
  • Android: Cambia colore di forma in runtime
  • Migliore opzione per utilizzare le API GData su Android?
  • JmDNS: Imansible risolvere il servizio
  • Come utilizzare intestazioni precompilate nel progetto Android NDK?
  • screenshot di Android 4.4:

    immettere qui la descrizione dell'immagine

    Ecco uno screenshot su Android 5:

    immettere qui la descrizione dell'immagine

    e su Android 5.1:

    immettere qui la descrizione dell'immagine

    Quello che ho trovato

    Ho cercato di passare tutta la sezione "cosa c'è di nuovo" di Android 5.1 e anche in alcune classi correlate docs, ma non ho trovato niente di speciale, ad exception di " setFastScrollStyle ". Tuttavia, non ho trovato alcuna spiegazione di come utilizzarlo (più è da API 21, quindi potrebbe non essere il motivo).

    La domanda

    Come posso fare un semplice scorrimento veloce a sinistra, in modo che sia più facile toccarlo?

    Come si usa setFastScrollStyle? C'è qualche tutorial per questo?

    2 Solutions collect form web for “Come gestire il fast-scroller su Lollipop 5.1?”

    Ho avuto lo stesso problema e dopo poche ore di ricerca ho trovato una soluzione. Questo commit AOSP mi ha aiutato maggiormente, mostra le modifiche apportte alla barra di scorrimento in Android 5.1 (SDK 22): Aggiorna le barre di scorrimento per abbinare il materiale spec

    Ci sono due possibilità:

    immettere qui la descrizione dell'immagine

    A: Utilizza il nuovo stile e aggiunge l'imbottitura

    Questo manterrà lo stesso nuovo rettangolo da API 21 (Android 5.1), ma aggiungere qualche imbottitura a sinistra ea destra.

    1: Copia il fastscroll_thumb_material.xml nella cartella dei disegni

    Questo dovrebbe essere il contenuto (i commenti AOSP rimossi per risparmiare spazio):

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:tint="?attr/colorControlActivated" android:shape="rectangle"> <solid android:color="@android:color/white" /> <size android:width="8dp" android:height="48dp" /> </shape> </item> <item> <shape android:tint="?attr/colorControlNormal" android:shape="rectangle"> <solid android:color="@android:color/white" /> <size android:width="8dp" android:height="48dp" /> </shape> </item> </selector> 

    2: Modifica il tuo tema

    Aggiungere il seguente elemento al tuo tema. Penso che tu possa mettere questo in uno stile e setFastScrollStyle con setFastScrollStyle , ma lo trovo più facile.

     <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item> 

    3: Modifica fastscroll_thumb_material.xml

    Puoi modificarla a piacimento, ma ho fatto quanto segue, che aggiunge 8dp a sinistra ea destra della barra di scorrimento. Ho aggiunto un elenco di livelli e un elemento intorno a ciascuna forma e aggiunto android:right="8dp" e android:left="8dp" al nuovo elemento. Ho provato ad aggiungere che agli articoli originali, ma che non funzionava, né ha aggiunto imbottitura alla forma.

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <layer-list> <item android:right="8dp" android:left="8dp"> <shape android:tint="?attr/colorControlActivated" android:shape="rectangle"> <solid android:color="@android:color/white" /> <size android:width="8dp" android:height="48dp" /> </shape> </item> </layer-list> </item> <item> <layer-list> <item android:right="8dp" android:left="8dp"> <shape android:tint="?attr/colorControlNormal" android:shape="rectangle"> <solid android:color="@android:color/white" /> <size android:width="8dp" android:height="48dp" /> </shape> </item> </layer-list> </item> </selector> 

    B: Modificare la barra di scorrimento sul vecchio stile

    Questo utilizzerà lo stile API 21, Android 5.0

    1: Aggiungere i vecchi drawables al tuo progetto

    Puoi scaricarli dal commit precedente (fastscroll_thumb_mtrl_alpha.png e fastscroll_track_mtrl_alpha.9.png), ma li ho anche in bundle, puoi anche scaricarli dal mio Google Drive .

    2: Aggiungi fastscroll_thumb_material.xml ai tuoi disegni

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha" android:tint="?attr/colorControlActivated" /> </item> <item> <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha" android:tint="?attr/colorControlNormal" /> </item> </selector> 

    3: Aggiungi fastscroll_track_material.xml ai tuoi disegni

     <?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/fastscroll_track_mtrl_alpha" android:tint="?attr/colorControlNormal" /> 

    4: Modifica il tuo tema

    Aggiungere il seguente elemento al tuo tema. Penso che tu possa mettere questo in uno stile e setFastScrollStyle con setFastScrollStyle , ma lo trovo più facile.

     <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item> <item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track_material</item> 

    Spero che questo aiuti a raggiungere il tuo objective 🙂

    Perché non impostare l' imbottitura sul lato destro del layout che contiene il ListView? Pagina web di Google @ setPadding () . Personalmente ho usato android: paddingLeft per un problema simile come il tuo.

    Un altro trucco comune è quello di aggiungere un (nascosto) ImageView nel layout sul lato destro (orientamento orizzontale). L'ImageView sarebbe nascosto e la dimensione (width) può essere impostata.

    Sono lieto di aiutare un utente SO frequente, spero di averlo fatto. Saluti, Tommy Kwee.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.