以编程方式找出滚动条大小

Programmatically find out scrollbar size

我正在使用自定义视图,我添加了滚动条,如下所示:

setHorizontalScrollBarEnabled(true);
setVerticalScrollBarEnabled(true);

TypedArray a = context.obtainStyledAttributes(R.styleable.View);
initializeScrollbars(a);
a.recycle()

现在有没有办法找出滚动条的粗细(以像素为单位)?对于垂直滚动条,我想找出宽度,对于水平滚动条,我想找出高度,均以像素为单位。

有没有办法以编程方式执行此操作?

为了回答我自己的问题,有几种方法可以通过编程方式获取滚动条大小:

View.getScrollBarSize() [API 16]
ViewConfiguration.getScaledScrollBarSize() [API 3]
View.getHorizontalScrollbarHeight()
View.getVerticalScrollbarWidth()

有趣的是,只有后两个对我有用并返回了正确的大小(8 像素)。上面两个返回 20 像素,这与 8 像素的实际滚动条大小不匹配。也许这与我以一种相当非正统的方式以编程方式将滚动条添加到自定义视图有关(参见 here)。无论如何,使用 getHorizontalScrollbarHeight()getVerticalScrollbarWidth() 为我解决了这个问题。