Android – フィールドの動的な追加_1

投稿者: | 2018年12月1日

Androidアプリの画面フィールドは、レイアウトXMLファイルで記述することが多いと思いますが、場合によっては何かのイベントをきっかけに、動的に追加・変更したいこともあります。

ボタンを押すと、そのたびにテキストフィールドを追加する構造を作ってみました。

やりたいことは、初期画面で一つだけボタンを表示し、そのボタンを押すたびに、テキスト”hogehoge”を追加していく、というものです。

数が多くなったときのために、スクロールできるようにもしました。

 

初期画面はこんな感じ。

 

“追加”ボタンを押すたびに、テキスト”hogehoge”が追加されていきます。

 

テキストが画面に収まりきらなくなると、タイトルだけを残してスクロールします。

 

このレイアウトは、次のような構成で定義されています。

 

フィールドが追加される部分は、”ScrollLayout”と”LinearLayout”を組み合わせ、さらにその下部の”LinearLayout”を動的な追加対象としました。

一番内側のLinearLayoutが”hogehoge”を構成する部分で、ここだけメインのレイアウトXMLファイルとは別に定義しています。ここではファイル名を”sub.xml”という名称にしています。

これを一つ外側のLinearLayoutに動的に追加していきます。そのためにはこのLinearLayoutにidを付与しておく必要があり、”root”としています。

 

ではレイアウトXMLのソースコードです。

 

 

次にjavaソースコードを示します。

 

onClickメソッドでsub.xmlのViewを呼び出し、id:rootのLinearLayoutに追加していきます。

ここでaddViewメソッドの第2引数は、要素の最後から2番目、つまり”追加”ボタンの前にaddすることを意味しています。

sub.xmlの内容を増やせば、要素を追加したり、より複雑な処理を入れることもできます。