ネームスペースを使わずにビューのプロパティを読む

ということで、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〜メソッドにより直接値を読みこむことができるのだ。

属性名がハードコードされているのが気にくわないよな。