2012-02-21 3 views
45

Ho un elenco di eventi separati per mese e anno (giugno 2010, luglio 2010 ecc.)Come utilizzare lo scroll veloce in Android?

Voglio abilitare lo scorrimento veloce perché l'elenco è molto lungo.

Come faccio ad attivare scorrimento veloce su ListViews in Android?

risposta

95

Nel metodo onCreate dell'uso ListActivity setFastScrollEnabled:

getListView().setFastScrollEnabled(true); 
+42

E nota: verrà visualizzato solo se l'altezza totale di listview è 4x o più grande dell'altezza visibile di listview. –

+1

@mice: c'è qualche documentazione riguardante il tuo commento? –

+2

Probabilmente non documentato, la condizione si trova nel codice sorgente. –

60

Uso android:fastScrollEnabled in xml:

<ListView 
    android:id="@+id/listview_files" 
    ... 
    android:fastScrollEnabled="true" > 
</ListView> 
4

Se si vuole essere in grado di personalizzare il vostro Fast-scroller, come scegliere la vostra immagine scroller proprio per apparire, io consiglio di utilizzare questa fonte:

https://github.com/nolanlawson/CustomFastScrollViewDemo/

Fondamentalmente, l'adattatore listview dovrà implementare un sectionindexer. Questo indicizzatore di sezione può essere molto spogliato se non si desidera complicare le cose e fornire un semplice fastscrolling per tutta la lunghezza dell'elenco.

La fonte diretta per la fastscroller è qui:

https://github.com/nolanlawson/CustomFastScrollViewDemo/blob/master/src/com/nolanlawson/customfastscrollviewdemo/CustomFastScrollView.java

Luogo questo punto di vista intorno al vostro ListView (nido tuo ListView all'interno di questo punto di vista nel file di layout xml) e impostare Android: fastScrollEnabled = "true" sulla tua lista.

Si potrebbe anche voler controllare una risposta precedente: Fast Scroll display problem with ListAdapter and SectionIndexer

0

Se si desidera mostrare l'indicizzazione alfabetico, si potrebbe desiderare di controllare questo fuori:

https://github.com/andraskindler/quickscroll

Si tratta di un progetto di libreria Ho creato, perché ho dovuto utilizzare questo modello di scorrimento in alcune app recenti, quindi ho pensato che gli altri potessero essere interessati a questo. È abbastanza facile da usare, vedi readme nel link github qui sopra.

5

provare il seguente

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 

    <style name="listviewfastscrollstyle" parent="android:Theme"> 
     <item name="android:fastScrollTrackDrawable">@drawable/listselector</item> 
     <item name="android:fastScrollThumbDrawable">@drawable/listselector</item> 
    </style> 

</resources> 

Nel suo manifesto impostare lo stile come questo:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/CustomTheme"> 

questo è il listview

<ExpandableListView 
     android:id="@android:id/list1" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false" 
     android:fastScrollAlwaysVisible="true" 
     android:fastScrollEnabled="true" 
     /> 
+0

Okay posso fare uno scorrimento veloce per data, intendo mentre eseguo lo scroll veloce posso visualizzare la data del record come quella nella cronologia delle chiamate – Rakshi

1

ho voluto fare qualcosa di simile a quello che voleva raggiungere. Mi sono imbattuto in this post. È un ottimo modo per implementare lo scorrimento veloce senza utilizzare lo standard Android AlphabetIndexer, che richiede un Cursore che potresti non avere sempre.

In sostanza, si dovrebbe implementare l'interfaccia SectionIndexer l'adattatore. Nel tuo caso, anziché la lettera corrente, mostreresti il ​​periodo corrente mentre scorri.

0

Sia definire fastScrollEnabled in XML o impostarla in fase di esecuzione in caso di necessità.

1) <ListView 
     ... 
     android:fastScrollEnabled="true" /> 

2) mListView.setFastScrollEnabled(true); 
0

All'interno del file di layout:

android: fastScrollEnabled = "true"

di programmazione è possibile attivare la barra di scorrimento veloce:.

getListView() setFastScrollEnabled (vero);