Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to define an array of integers in a declare-styleable?

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?
like image 274
XåpplI'-I0llwlg'I - Avatar asked Jan 08 '13 16:01

XåpplI'-I0llwlg'I -


1 Answers

  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()
    
like image 75
Vladimir Mironov Avatar answered Oct 20 '22 00:10

Vladimir Mironov