Có ofcourse, đây là liên kết:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/FastScroller.java
Đây là một condidion giữa các dòng 224-227. Và để đặt số lượng trang cần thiết để hiển thị cuộn nhanh, có một hằng số:
private static int MIN_PAGES = 4;
Và về việc vô hiệu hóa nó ... Đó là trường riêng nên không có cách nào đơn giản để thực hiện. Bạn có thể thử sử dụng phản xạ hoặc tạo FastScroller tùy chỉnh dựa trên bản gốc. Nhưng tôi nghĩ rằng cách đơn giản nhất là để kiểm tra như thế nào trong condidion này trong mã Android:
//pseudocode
int numberOfPages = listView.itemsCount/listView.visibleItemsCount;
if(numberOfPages > yourValue)
listView.setFastScrollEnabled(true);
else
listView.setFastScrollEnabled(false);
Nhưng nó chỉ có thể làm việc nếu yourValue
sẽ lớn hơn 4. Nếu bạn muốn làm điều đó cho các giá trị ít thì bạn cần để sử dụng sự phản chiếu hoặc tạo lớp tùy chỉnh.
EDIT:
Đối với phiên bản mới nhất có liên kết: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/widget/FastScroller.java/
Và dòng là 444-447 :)
Và đối với phản xạ tôi sẽ cố gắng một cái gì đó như thế này:
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");
}
Nó không được kiểm tra vì vậy tôi không biết nếu nó thực sự hoạt động.
Nguồn
2013-02-05 14:09:28
nhờ trả lời chi tiết của bạn. – anujprashar