android : Viewをxmlから動的に生成する際の注意…
androidアプリ中で動的にViewを生成・配置する…というのはまぁよくある動作ですが。
この場合、毎回コード上で属性を指定するとそもそもめんどくさい上に、修正時にどこ直していいかよくわからなくなる。ので、出来れば属性などはコードから外に出して別管理にしたい。
…この場合、Viewの属性をxmlで定義した上で、xmlからViewを生成するというのが無難かと思われる(外観はStyleがいいでしょうけど)。
まずViewを定義したxmlを作成し、res/layout以下に保存する。
<?xml version="1.0" encoding="utf-8"> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="2dip" android:layout_weight="1" android:text="ぼたん"> </Button>
んで、Activity上にViewを作成する場合はコード側でこんな感じ。
View V = this.getLayoutInflater().inflate(R.layout.xmlfile, null); this.addView(V);
getLayoutInflater()はActivityクラスのfunctionなので、Activity上に配置するView内で子Viewを同様に生成する場合は
View V = ((Activity) this.getContext()).getLayoutInflater().inflate(~)
になる。inflate()の第二引数にViewを指定すると、生成されるViewは指定されたViewの子要素になるので、レイアウトでweightを使いたい場合なんかはそうしたほうがイイカモ。