<!--attrs.xml-->
<resources>
<declare-styleable name="View2">
<attr name="textColor" format="color"/>
<attr name="textSize" format="dimension"/>
</declare-styleable>
</resources>
<!--styles.xml-->
<resources>
<style name="View2">
<item name="textColor">#ffffffff</item>
<item name="textSize">22dip</item>
</style>
</resources>
<!--the View2 class defined-->
public View2(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.View2);
final int len =array.Length();
final int N =array.getIndexCount();//why N==0,because i initialize in styles.xml
}
<!--the callback method,like in Activity.onCreate(..)-->
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View2 v = new View2(this,null);
}
attrs.xml で styable name="View2" を宣言し、styles.xml で 2 つの attrs を初期化し、次に TypedArray で Style を取得します。2 つを初期化するため、なぜ N==0 なのか疑問です。 attrsin styles.xml