我正在尝试使用FastScroll机制实现ListView,该机制使用时间而不是A-Z
不幸的是,我似乎无法找到FastScroller索引使用的布局 - 它似乎决定显示一个带有非常大的白色文本的小黑方
我看过来源:
这两个似乎都表明关键的快速滚动成员变量是私有的,并且使用的资源ID是固定的:
mOverlayDrawable = res.getDrawable(com.android.internal.R.drawable.menu_submenu_background);
有没有办法覆盖这个?理想情况下我的目标是2.2。以及。
答案 0 :(得分:1)
您可以尝试使用以下内容进行反思:
try {
Field scrollerField = AbsListView.class.getDeclaredField("mFastScroller"); //java.lang.reflect.Field
scrollerField.setAccessible(true);
FastScroller instance = scrollerField.get(listViewInstance);
Field overlayField = instance.getClass().getDeclaredField("mOverlayDrawable");
overlayField.setAccessible(true);
overlayField.set(instance, yourValueHere);
} catch (Exception e) {
Log.d("Error", "Could not get fast scroller");
}
我只是输入它所以它可能会或者可能不会直接编译,但这就是主意。我没有检查所有版本中的字段是否被调用相同,您可能需要进行调整。