ネームスペースを使わずにビューのプロパティを読む
ということで、ADT Plugingで作成したプロジェクト、レイアウトからは外部プロジェクトのリソース(Rクラス)を参照できないのか、又は、プロジェクト中で管理できるリソース(R.java)は一つだけようである。
このままではやはり、共通ライブラリィを皆で共有して使う、という方法は採れないことになる。
以下の方法であれば、拡張されたコンポーネントのプロパティをレイアウトリソースから読み込めることが分かった。
-
- main_layout.xml (拡張されたビューを抜粋)
guidance="URLを入力してください">
上のように属性 "guidance"のネームスペースを外すことで、aaptはこの属性を無視するので、R.Javaへ変換もされないし、attr.xmlの必要も無い。
-
- jp.hoge.view.GuidanceView#GuidanceView (修正後)
private String guidance;
public GuidanceView(Context context, AttributeSet attrs) {
super(context, attrs);
if( attrs != null ){
this.guidance = attrs.getAttributeValue(null, "guidance");
}
:
}
引数attrsはこのビューに適合するパーサのスナップショットであり、getAttribute〜メソッドにより直接値を読みこむことができるのだ。
属性名がハードコードされているのが気にくわないよな。