Frage

I'm implementing my own <declare-styleable> for a custom View (following the instructions here). I'd like to be able to specify an array of integers as one of the possible XML attributes. How do I:

  1. Specify the integer array as an XML attribute in attrs.xml?
  2. Get it from the TypedArray after calling obtainStyledAttributes() in my custom View?
War es hilfreich?

Lösung

  1. You can declare it as a reference.

    <declare-styleable name="MyView">
        <attr name="array" format="reference"/>
    </declare-styleable>
    
  2. It looks like TypeArray hasn't getIntArray method so you have to get it directly from the resources.

    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()
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top