はい、もちろん、ここにリンクがあります:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/FastScroller.java
これは、224〜227行目の条件です。また、高速スクロールを表示するために必要なページ数を設定するには、次の定数があります。
private static int MIN_PAGES = 4;
そしてそれを無効にすることについて...それはプライベートフィールドなので、それを行う簡単な方法はありません。リフレクションを使用するか、オリジナルに基づいてカスタムFastScrollerを作成してみてください。しかし、私は最も簡単な方法は、Androidコードのこの条件のようにチェックすることだと思います:
//pseudocode
int numberOfPages = listView.itemsCount / listView.visibleItemsCount;
if(numberOfPages > yourValue)
listView.setFastScrollEnabled(true);
else
listView.setFastScrollEnabled(false);
ただし、4より大きくなる場合にのみ機能する可能性yourValue
があります。より少ない値で実行する場合は、リフレクションを使用するか、カスタムクラスを作成する必要があります。
編集:
最新バージョンについては、次のリンクがあります:http:
//grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/FastScroller.java/
そして行は444-447です:)
そして、振り返りのために、私はこのようなことを試みます:
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");
}
テストされていないので、実際に機能するかどうかはわかりません。