ビューとビューグループ

広告

アプリケーションで表示される画面にはテキストやボタンといったビューと呼ばれる部品が表示されています。アクティビティに対してsetContentViewメソッドを使うことで部品を配置することができますが、ここではまず部品として配置されるビュー及びビューグループについて簡単にご説明します。

1.setContentViewメソッド
2.ビュー
3.ビューグループ

アクティビティにテキストやボタンといった部品を配置するには、setContentViewメソッドを使います。どのタイミングでこのメソッドを使うのかについては、アクティビティが開始された直後に呼び出されるonCreateメソッドの中で実行します。

今までも何度か表示していますが、EclipseでAndroidの新しいプロジェクトを開始した時、自動的に作成されるコードは以下となっていました。

package jp.javadrive.hello;

import android.app.Activity;
import android.os.Bundle;

public class HelloActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

onCreateメソッドの中で「setContentView(R.layout.main);」という文が実行されています。この文が実行されることでアクティビティにテキストなど部品が配置されます。

Activityクラスの中でsetContentViewメソッドは3種類定義されています。

void setContentView(int layoutResID)
void setContentView(View view)
void setContentView(View view, ViewGroup.LayoutParams params)

2番目と3番目のメソッドでは、引数にアクティビティに配置するViewクラスのオブジェクトを指定しています。それに対して1番目のメソッドでは別途XMLファイルで作成したレイアウトを表すIDを指定しています。自動で作成されたソースに記載されているsetContentViewメソッドの引数に指定されている「R.layout.main」がこのIDにあたります。

このようにビューの指定ではプログラムの中でViewクラスのオブジェクトを指定する以外に、事前に配置するビューをXMLファイルで作成しておき、それを読み込んで利用することが可能です。この二つの方法については次のページ以降でそれぞれ試します。

それではアクティビティに配置するビューについて確認しておきます。ビューはViewクラスで定義されています。

  • java.lang.Object
  • android.view.View
  • public class View extends Object implements Drawable.Callback KeyEvent.Callback AccessibilityEventSource

Viewクラスには多くのサブクラスがあります。例えば画面上に文字を表示したい場合はandroid.widget.TextViewクラスを使います。

  • java.lang.Object
  • android.view.View
  • android.widget.TextView
  • public class TextView extends View implements ViewTreeObserver.OnPreDrawListener

またボタンを表示したい場合はandroid.widget.Buttonクラスを使います。(Buttonクラスはandroid.widget.TextViewクラスのサブクラスです)。

  • java.lang.Object
  • android.view.View
  • android.widget.TextView
  • android.widget.Button
  • public class Button extends TextView

これらのように画面に表示されるビューのことをウィジェットとも呼びます。ウィジェットは単独でアクティビティに配置されることもありますし、後からご説明するビューグループの中に配置された上でビューグループがアクティビティに配置されることもあります。

アクティビティでsetContentViewメソッドを使って配置できるビューは1つだけです。ただ1つの画面に表示される部品は通常1つではありません。テキストボックスやボタンなどが並べて配置します。そこでビューの一種であるビューグループにまずボタンなどの必要なビューを配置した上で、ビューグループをアクティビティに追加します。

ビューグループは次のように定義されています。

  • java.lang.Object
  • android.view.View
  • android.view.ViewGroup
  • public class ViewGroup extends View implements ViewManager ViewParent

ビューグループもViewクラスのサブクラスでありビューの一つです。そしてViewGroupクラスには追加するビューのレイアウト方法毎に複数のサブクラスが用意されています。例えばLinearLayoutクラスはビューグループに追加したウィジェットを縦に並べていきます。

p4-1

またTableLayoutクラスの場合はビューグループに追加したウェジェットを表のように並べていきます。

p4-2

このように目的に応じたビューグループを使用することで、アクティビティの中にビューを思い通りの形にレイアウトすることができます。

またビューグループもビューの一種ですので、ビューグループの中に別のビューグループを追加することもできます。

p4-3

階層のようにビューグループを積み重ねていくことでより複雑なレイアウトを実現することが可能です。

( Written by Tatsuo Ikura )