Javaプログラミング/Javaプログラミング関連情報

レイアウトを使いこなそう!(3ページ目)

レイアウトで使える機能を覚え、より本格的なプログラムが作成できるようになりましょう。

執筆者:掌田 津耶乃

レイアウトを生成する


XMLでレイアウトを準備するというのは、レイアウトのデザインが簡単にできるという面で便利ですが、反面、静的なレイアウトしか使えないということにもなります。ダイナミックなレイアウトの生成などはXMLでは行えないでしょう。

そこで、「Javaのソースコード内からレイアウトを生成する」ということについてもやってみましょう。既に、ボタンやテキストビューといったコンポーネント類は、Javaのソースコード内では、あらかじめ用意されているクラスのインスタンスとして扱うようになっていることはわかりました。これは、レイアウトについても同様です。レイアウトも、それに相当するクラスが用意されており、そのインスタンスを生成することで新たにレイアウトを作成し、表示させることができます。

package jp.allabout.android;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.*;
import android.widget.*;

public class MyAndy extends Activity {
  private Button main_btn;

  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    main_btn = (Button)this.findViewById(R.id.main_button);
    main_btn.setOnClickListener(new MyClickAdapter());
  }

  // レイアウトの生成メソッド
  public LinearLayout createLayout(){
    LinearLayout layout = new LinearLayout(this);
    TextView text = new TextView(this);
    text.setText("これは、ダイナミックに生成されたレイアウトです。");
    layout.addView(text,new LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.FILL_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT));
    return layout;
  }

  // イベントクラス
  class MyClickAdapter implements OnClickListener {
    @Override
    public void onClick(View v) {
      if (v == main_btn) {
        setContentView(createLayout());
      }
    }
    
  }
}


ここでは、ボタンをクリックしたらTextViewを1つだけ持つLinearLayoutを作成し、これを画面に表示させています。画面上はXMLで定義したレイアウトか、ダイナミックに生成されたものか区別はつかないでしょうが、その場で、コードでレイアウトが生成できるというのは、使い道次第によってはいろいろ利用方法がありそうですね。

  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます