プログラムの中で画面レイアウトを記述
まずプログラムの中で画面にどのようにビューを設置するのかを直接記述する方法を確認します。
最初にボタンを一つだけ追加する方法を試してみます。詳細はまた別のページで説明しますがボタンを作成するには次のように記述します。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("ボタン1");
}
Buttonクラスのオブジェクトを作成しそのボタンに表示される文字列をsetTextメソッドを使って設定しています。
これでビューが作成されました。このビューをアクティビティに追加するにはActivitiyクラスで定義されているsetContentViewメソッドを使います。
setContentView public void setContentView(View view)
Set the activity content to an explicit view. This view is placed directly into the activity's view hierarchy. It can itself be a complex view hierarhcy. Parameters: view The desired content to display.
またビューを単に追加するだけでなく、追加した後にどのように配置するのかを合わせて指定するための同じ名前のメソッドも用意されています。
setContentView public void setContentView(View view, ViewGroup.LayoutParams params)
Set the activity content to an explicit view. This view is placed directly into the activity's view hierarchy. It can itself be a complex view hierarhcy. Parameters: view The desired content to display. params Layout parameters for the view.
1番目の引数に追加するViewクラスのオブジェクトを指定し、2番目の引数にどのように配置するのかを表すLayoutParamsクラスのオブジェクトを指定します。(2番目の引数については取り合えず気にしないで下さい)。
では先ほど作成したボタンをアクティビティに追加してみます。次のように記述します。今回は配置方法は指定していません。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("ボタン1");
setContentView(button);
}
これでボタンがアクティビティに追加されます。
サンプルプログラム
では実際に試してみます。「アクティビティの追加」を参考に「Test5_1Activity」をプロジェクトに追加し、起動時にこのアクティビティが呼び出されるように設定します。
作成された「Test5_1Activity.java」ファイルを次のように記述します。
package jp.javadrive.sample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
public class Test5_1Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("ボタン1");
setContentView(button);
}
}
では実行してみます。
ボタンがアクティビティに追加されています。今回配置方法を指定していないので画面全体にボタンが広がって表示されています。
では先ほどの「Test5_1Activity.java」ファイルを次のように修正して下さい。
package jp.javadrive.sample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.ViewGroup.LayoutParams;
public class Test5_1Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("ボタン1");
setContentView(button, new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
}
}
では実行してみます。
今回は配置方法として幅及び高さを必要なサイズになるように指定しています。
複数のビューをアクティビティに設置
前のページで記載した通り、複数のビューをアクティビティに追加する場合にはビューグループを使用します。
では例としてandroid.view.ViewGroupクラスのサブクラスであるandroid.widget.LinearLayoutクラスのオブジェクトを使用します。(詳細は別のページで見ていきますのでここでは参考程度に見ておいて下さい)。
まずアクティビティに追加される一番最下層のビューグループを作成します。作成したビューグループをsetContentViewメソッドを使ってアクティビティに追加します。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
}
続いてビューグループに追加するビューを作成します。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
Button button1 = new Button(this);
Button button2 = new Button(this);
button1.setText("ボタン1");
button2.setText("ボタン2");
setContentView(linearLayout);
}
ビューをビューグループに追加します。この時、合わせてビューグループの中でビューをどのように配置するのかを指定します。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
Button button1 = new Button(this);
Button button2 = new Button(this);
button1.setText("ボタン1");
button2.setText("ボタン2");
linearLayout.addView(button1, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(button2, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
setContentView(linearLayout);
}
これでボタンが二つ配置されたビューグループがアクティビティに追加されます。
サンプルプログラム
では実際に試してみます。「Test5_2Activity」をプロジェクトに追加し起動時にこのアクティビティが呼び出されるように設定します。そして作成された「Test5_2Activity.java」ファイルを次のように記述します。
package jp.javadrive.sample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
public class Test5_2Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
Button button1 = new Button(this);
Button button2 = new Button(this);
button1.setText("ボタン1");
button2.setText("ボタン2");
linearLayout.addView(button1, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(button2, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
setContentView(linearLayout);
}
}
では実行してみます。
二つのボタンが追加されたビューグループがアクティビテイに追加されました。
このようにプログラムの中でビューを作成してアクティビティに追加する場合、プログラムの実行時に条件に応じてビューを追加するといったことが可能です。その代わり初期画面のようなものをプログラムの中で全て記述するとビューの定義などでプログラムが長くなってしまうというデメリットもあります。
( Written by T.buzz.Ikura+ )