代码之家  ›  专栏  ›  技术社区  ›  Andreas

是否真的没有一种干净的方法以编程方式向自定义视图添加滚动条?

  •  0
  • Andreas  · 技术社区  · 6 年前

    我想以编程方式将滚动条添加到自定义视图中。在棒棒糖之前,这是在构造器中完成的,如下所示:

    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年了,在自定义视图中添加滚动条看起来是一项相当常见的任务,所以我真的很困惑,为什么这显然是如此复杂,难以通过编程实现。

    0 回复  |  直到 6 年前
    推荐文章