inflaterで自由にレイアウト
間違っていたので修正しました。
inflaterを使うと、複数のレイアウトXMLを使ったレイアウトができます。
例えば、レイアウトの外枠だけメインのレイアウトXMLで定義しておきます。
そして、その中に入れたいViewとして、WebViewとImageViewがあったとします。
この場合、まぁプログラムでこれらのViewを作成してもいいんですが、ぼくが試した限りでは
プログラムで生成するViewではオプションを指定しづらい感じがしてまして。
で、やり方なんですが、
- 外枠だけのXMLで、WebViewとかを入れたいLayout、LinearLayoutとかFrameLayoutとかにIDをセットしておきます
- 次に、WebViewだけ定義したXMLを生成します。このとき、URLみたいなオプションを入れ忘れないようにしましょう。
- 入れ忘れるとエラーになるので。
- 同様に、ImageViewだけ定義したXMLを生成します。
で、コードはどうやるかというと、
- getLayoutInflater().inflate(R.layout.xxx, yyy);
と書きます。ここで、xxxはレイアウトXMLの「ファイル名」です。
yyyは外枠のレイアウトXMLの「ViewGroup」です。
→ ViewGroup vgroup = (ViewGroup) findViewById(R.id.zzz);
上記では、「外枠を作って、その中に別定義のXMLを入れる」例を上げましたが、当然実際にはもっと凝ったこと
したいですよね。外枠って書きましたけど、正確にはもっと複雑なレイアウトXML書いていいんです。
ただし、inflaterで入れたいLayoutタグには必ずIDをセットすること。そして、その中に入れるWebViewとかも
もっと凝ったレイアウトでいいんです。
…こんな説明で、わかりますかね?