よく使われるButtonクラスの表示(配置)方法とクリックイベントなど基本的な説明をします。

サンプル: https://github.com/stack3/AndroidButtonSample
サンプルを起動するといくつかボタンが表示されます。今回は一番上のNormal Buttonについて説明。

03

Buttonの配置

Activityのxmlで以下のように記述してButtonを配置しています。

<Button
  android:id="@+id/normal_button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/normal_button" />

通常はボタンのテキストに合わせて幅は伸縮するので、通常android:layout_widthはwrap_contentにします。

ボタンのテキストはandroid:textで設定しますが、直接文字列をここに書くのはやめて文字列リソースのIDを参照するようにしましょう。

strings.xml

<string name="normal_button">Normal Button</string>

クリックイベント

クリックイベントを受け取り、処理する場合は、以下のようにします。

OnClickListenerのonClickメソッドでクリックした時の処理をする。

private OnClickListener normalButtonOnClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        Button normalButton = (Button)v;
        // ボタンのテキストを"Clicked"に変更。ここも直接文字列指定せずに文字列リソースIDを指定する。
        normalButton.setText(R.string.clicked);
    }
};

Activity#onCreateなどでOnClickListenerオブジェクトをButton#setOnClickListenerに渡す。

Button normalButton = (Button)findViewById(R.id.normal_button);
normalButton.setOnClickListener(normalButtonOnClickListener);

上記の処理を簡略化して以下のように書くこともできます。

normalButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Button normalButton = (Button)v;
        normalButton.setText(R.string.clicked);
    }
});

自分はこの書き方はあまり好きではないのですが・・・クリック処理のプログラムが長くなると、可読性が下がるので最初に書いたような方法にしています。

ボタンを押すとテキストがClickedに変わり、その時にボタンの幅が変わります。

05

これはlayout_widthがwrap_contentであるためです。

次回はボタンのカスタマイズです。
その2へ続く