如何在声明样式中定义整数数组?

Xåp*_* - 13 android android-xml typed-arrays declare-styleable android-resources

我正在实现自己<declare-styleable>的自定义视图(按照此处的说明).我希望能够将整数数组指定为可能的XML属性之一.我如何能:

  1. 将整数数组指定为XML属性attrs.xml
  2. 在我的自定义视图中调用后,从TypedArray中获取它obtainStyledAttributes()

Vla*_*nov 28

  1. 您可以将其声明为参考.

    <declare-styleable name="MyView">
        <attr name="array" format="reference"/>
    </declare-styleable>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它看起来TypeArray没有getIntArray方法所以你必须直接从资源中获取它.

    final TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);
    final int id = array.getResourceId(R.styleable.MyView_array, 0);
    
    if (id != 0) {
        final int[] values = getResources().getIntArray(id);
    }
    
    array.recycle()
    
    Run Code Online (Sandbox Code Playgroud)

  • 使用TypedArray后不要忘记调用array.recycle().那将是第2行之后. (9认同)