ホーム > android, 作業メモ > android : Viewをxmlから動的に生成する際の注意…

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を使いたい場合なんかはそうしたほうがイイカモ。

カテゴリー: android, 作業メモ タグ: