Sì naturalmente, ecco il link:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/FastScroller.java
Questa è una condidion tra le linee 224-227. E per impostare il numero di pagine che sarà necessario per mostrare scorrimento veloce, c'è una costante:
private static int MIN_PAGES = 4;
e sulla disattivazione è ... E 'un campo privato quindi non c'è semplicemente il modo per farlo. Puoi provare a utilizzare i riflessi o creare FastScroller personalizzato in base all'originale. ma penso che il modo più semplice è quello di verificare come in questo condidion nel codice Android:
//pseudocode
int numberOfPages = listView.itemsCount/listView.visibleItemsCount;
if(numberOfPages > yourValue)
listView.setFastScrollEnabled(true);
else
listView.setFastScrollEnabled(false);
ma può funzionare solo se yourValue
sarà superiore a 4. Se si desidera farlo per meno valori, allora avete bisogno usare la riflessione o creare una classe personalizzata.
EDIT:
Per nuova versione v'è il link: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/FastScroller.java/
e le righe sono 444-447 :)
E per riflessioni vorrei provare qualcosa di simile:
try {
Field scrollerField = AbsListView.class.getDeclaredField("mFastScroller"); //java.lang.reflect.Field
scrollerField.setAccessible(true);
FastScroller instance = scrollerField.get(listViewInstance);
Field minPagesField = instance.getClass().getDeclaredField("MIN_PAGES");
minPagesField.setAccessible(true);
minPagesField.set(instance, yourValue);
} catch (Exception e) {
Log.d("Error", "Could not get fast scroller");
}
Non è testato, quindi non so se funziona davvero.
fonte
2013-02-05 14:09:28
grazie per la risposta dettagliata. – anujprashar