動的なレイアウトの作成について

1,522 views
Skip to first unread message

k_shimajiri

unread,
Dec 8, 2010, 9:12:37 PM12/8/10
to 日本Androidの会
島尻と申します。

動的なレイアウトの作成についてわからないことがあり、困っています。
結論だけ申しますと、ビューに設定するウィジェットを、現在 setContentView() で設定されているレイアウトXMLファイル以外から取
得できないか、ということです。

具体的には、どんなアクティビティを表示しているときでも、画面下に同じ設定のボタンを表示させておきたい、と思っています。
例えば、LinearLayoutを使い、ListViewの下にButtonが一つあるようなレイアウトを作成したい場合、下記のようなコードでいけ
るのではないかと思っているのですが、上手くいきません。

onCreate(){
// 今回表示したいレイアウト(LinearLayoutの中に、ListViewが一つあるだけ
setContentView(R.layout.main_layout);
// そのLinearLayoutを取得
LinearLayout layout = (LinearLayout)findViewById(R.id.layaout);
// 常に表示したいボタンが記述されているXMLファイルを設定(findViewById()でそのボタンを取得するため
setContentView(R.layout.button_layout);
// 常に表示したいボタン取得
Button b = (Button)findViewById(R.id.button);
// ビューにボタンを設定
layout.addView(b);
// ListViewの下にButtonがあるLinearLayoutが作成されたので、設定
setContentView(layout);
}

これだと、ListViweが表示されるだけです。
私としては、XMLで定義されたビューやウィジェットの設定を取得できるクラスを作成し、そのクラスを通じてビューやボタンの操作ができたらいいなと
思っているのですが、そもそもそういう場合はXMLを使わず、コーディングでボタン類を定義するべきなのでしょうか。

以上、宜しくお願いします。

Ishikawa Hiromi

unread,
Dec 8, 2010, 10:10:44 PM12/8/10
to android-g...@googlegroups.com
こんにちは。

やりたいのは、こういうことでしょうか?

onCreate(){
// 今回表示したいレイアウト(LinearLayoutの中に、ListViewが一つあるだけ
setContentView(R.layout.main_layout);
// そのLinearLayoutを取得
LinearLayout layout = (LinearLayout)findViewById(R.id.layaout);

// 常に表示したいボタンが記述されているXMLファイルを設定(findViewById()でそのボタンを取得するため
View layout1 = View.inflate(this, R.layout.button_layout, layout);
layout.addView(layout1);
}

もしくは、以下のリンク先にあるような話でしょうか?

http://www.techdoctranslator.com/resources/articles/articles-index/layout-tricks-reuse

http://www.techdoctranslator.com/resources/articles/articles-index/layout-tricks-stubs


2010年12月9日11:12 k_shimajiri <shima...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

k_shimajiri

unread,
Dec 9, 2010, 4:31:26 AM12/9/10
to 日本Androidの会
島尻です。

ご指摘の通り、インフレーターを使うことで上手く表示されました!ありがとうございます。
また、ListViewの縦幅がfill_parent指定になっていたことも上手く表示されない原因だったようです。
また、調べている過程でxmlにinclude指定で他のxmlファイルからビューを挿入させることができ、これも
同じように表示されることがわかりました。

大変助かりました。ありがとうございます!
Reply all
Reply to author
Forward
0 new messages