次のコンストラクターを使用してカスタムViewサブクラスを作成しました。
public MyCustomView(Context context, AttributeSet attrs)
{
super(context, attrs);
// get custom "thingy" attribute specified in XML
int thingy = attrs.getAttributeIntValue(MY_NAMESPACE, "thingy", 0);
//rest of constructor
...
}
ご覧のとおり、XML属性からカスタムの「thingy」属性を取得します。これは完全に正常に機能し、これまでのところ問題はありません。それでは、なぜGoogleは、カスタムビューのXML属性をdeclare-styleable
in res/values/attrs.xml
(ここで説明)で定義し、それらを呼び出すcontext.getTheme().obtainStyledAttributes()
(ここで説明)を使用して適用するように指示するのですか?