dre*_*ale 12 android scrollbar
我知道listview可以像这样在XML中设置滚动条拇指Android:scrollbarThumbVertical等.
但是我在java代码中创建了一个listview实例,我可能需要设置不同的scrollbar thumb.有没有一种方法可以通过编程方式设置滚动条拇指?
Eng*_*uad 24
你可以通过反思实现这一点:
try
{
Field mScrollCacheField = View.class.getDeclaredField("mScrollCache");
mScrollCacheField.setAccessible(true);
Object mScrollCache = mScrollCacheField.get(listview);
Field scrollBarField = mScrollCache.getClass().getDeclaredField("scrollBar");
scrollBarField.setAccessible(true);
Object scrollBar = scrollBarField.get(mScrollCache);
Method method = scrollBar.getClass().getDeclaredMethod("setVerticalThumbDrawable", Drawable.class);
method.setAccessible(true);
method.invoke(scrollBar, getResources().getDrawable(R.drawable.scrollbar_style));
}
catch(Exception e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码执行如下:
listview.mScrollCache.scrollBar.setVerticalThumbDrawable(getResources().getDrawable(R.drawable.scrollbar_style));
Run Code Online (Sandbox Code Playgroud)
我不知道这个问题的答案,但经过一番挖掘后,我认为这不可能没有麻烦。
这个 xml 属性实际上与 a 相关联View,而不是 a ListView- 在 Android View 源代码中,似乎设置垂直拇指可绘制的唯一位置是“initializeScrollbars”方法。现在这个方法不是私有的,所以我们可以扩展 View 的任何子级并重写这个方法,但问题是设置拇指可绘制所需的关键组件 ScrollabilityCache 是私有的,没有任何 getter 方法。
因此,如果不重写大量代码,我认为没有任何简单的方法可以做到这一点 - 抱歉!
| 归档时间: |
|
| 查看次数: |
5955 次 |
| 最近记录: |