我想以编程方式将滚动条添加到自定义视图中。在棒棒糖之前,这是在构造器中完成的,如下所示:
setHorizontalScrollBarEnabled(true);
setVerticalScrollBarEnabled(true);
TypedArray a = context.obtainStyledAttributes(R.styleable.View);
initializeScrollbars(a);
a.recycle();
(
see here
)
initializeScrollbars()
API私有,因此不再可用
(see here)
suggested
只需手动导入
初始化滚动条()
这样称呼它:
final TypedArray a = context.getTheme().obtainStyledAttributes(new int[0]);
try {
// initializeScrollbars(TypedArray)
Method initializeScrollbars = android.view.View.class.getDeclaredMethod("initializeScrollbars", TypedArray.class);
initializeScrollbars.invoke(this, a);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
a.recycle();
这是个骗局,但这当然是个骗局。
那么这是否意味着在引入棒棒糖和移除
初始化滚动条()
仍然不可能以编程方式将滚动条添加到自定义视图中,唯一安全的方法是对XML进行膨胀,或者是否有一个干净的解决方案可以同时这样做?
初始化滚动条()
如果不提供另一种方法来做它所做的事。。。特别是已经4年了,在自定义视图中添加滚动条看起来是一项相当常见的任务,所以我真的很困惑,为什么这显然是如此复杂,难以通过编程实现。