Typedarray And Styleable Attributes: Getindexcount() Vs. Length()
Solution 1:
I was just fiddling with this and I found the whole thing confusing, but I think I got it figured out:
So you have declared N attributes in attrs.xml, for your class.
Now the size of the obtained TypedArray
is N. It always passes the same sized array.
But maybe you defined only X attributes in your layout xml, so getIndexCount()
returns X.
In your widget's init, if you were to ask yourself how many and which attributes
were defined in xml, you would first find out how many, using getIndexCount()
.
Then you loop from 0 to getIndexCount()-1
and ask the TypedArray
: "what's the index of
the i-th supplied attribute?".
So suppose you want to force an attribute to be set in xml, you can now check this because one of the calls to getIndex() has to return the id you are looking for.
But you can always ignore that, and supply default values. Then you can just call a.getInteger( R.styleable.MyClass_MyAttribute, defaultValue );
You can check R.java to see that all attribute IDs start at 0, for every class. The generated comments are also helpful to understand.
Solution 2:
you question is very simple indeed in common use,like this,first defines a class myview extends View{...},and then apply myview to layout.xml and define some attributes like 'textColor="#ffffffff"' etc,in the layout.xml,so your a.getIndexCount() return not null or not zero,that is what you expected.
now i change the question, you define a class myview extends Object,note not extends View class,and you will never use the layout.xml to your self-defined myview.the whole things like the android defined class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Callback, AccessibilityEventSource{...},no layout.xml,no extends View convenience,the only resources you can use is attrs.xml,styles.xml.
so what you able to do to let a.getIndexCount() return not null or not zero like mytop: why TypedArray.getIndexCount() always returns 0
Post a Comment for "Typedarray And Styleable Attributes: Getindexcount() Vs. Length()"