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とかも

もっと凝ったレイアウトでいいんです。

…こんな説明で、わかりますかね?