anu*_*har 5 android android-listview
在android setFastScrollEnabled(true);中用于制作ListView快速滚动.
如果项目较少,则此快速滚动不起作用ListView.我在某处读到,只有当listview总高度是listview可见高度的4倍或更多时,android中的快速滚动才有效.我花了好几个小时试图在框架源代码中找到它,但我无法找到它.
有人能指出我放在android框架源代码中,当ListView中的项目较少时,此条件禁用快速滚动.
是的,这是链接:
这是第224-227行之间的条件.并且为了设置显示快速滚动所需的页数,有一个常量:
private static int MIN_PAGES = 4;
Run Code Online (Sandbox Code Playgroud)
关于禁用它...这是一个私人领域,所以没有简单的方法去做.您可以尝试使用反射或基于原始创建自定义FastScroller.但我认为最简单的方法是检查Android代码中的这个条件:
//pseudocode
int numberOfPages = listView.itemsCount / listView.visibleItemsCount;
if(numberOfPages > yourValue)
listView.setFastScrollEnabled(true);
else
listView.setFastScrollEnabled(false);
Run Code Online (Sandbox Code Playgroud)
但它可能只有yourValue在大于4的情况下才有效.如果你想用更少的值来做,那么你需要使用反射或创建自定义类.
编辑:
对于最新版本,有链接: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");
}
Run Code Online (Sandbox Code Playgroud)
它没有经过测试,所以我不知道它是否真的有效.
| 归档时间: |
|
| 查看次数: |
4828 次 |
| 最近记录: |