Button ボタン表示 (Android Kotlin API)

Android 1.0 ~

2019年02月20日

 

 

Kotlinを使って、Androidアプリの画面にボタンを表示する方法と、ボタンが押された時に処理を実行する方法について説明します。 ボタン表示には、ButtonクラスもしくはButtonタグを用います。

 

java/com/example/MainActivity.kt
package com.example.sample

import android.app.Activity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast

class MainActivity : Activity() {

  private val clickListener : View.OnClickListener = View.OnClickListener {
    Toast.makeText(applicationContext, "ボタンが押されました", Toast.LENGTH_SHORT).show();
  }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val button: Button = findViewById(R.id.button)
    button.setOnClickListener(clickListener)
  }

}
res/layout/activity_main.xml(レイアウトXML)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

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

</LinearLayout>
res/values/strings.xml
<resources>
  <string name="label">ボタン</string>
</resources>
表示結果
表示結果
表示結果(ボタン押下時)
表示結果(ボタン押下時)

 

 

目次

  1. 前提条件
  2. Buttonの概要
  3. Buttonの使い方
  4. 参考情報

前提条件

今回説明する手順は、以下を前提に説明します。

 

動作確認端末

  • Android Studio 3.3
  • Nexus 5X API 28(Android9.0) – Androidエミュレータ

 

 

Buttonの概要

  • Buttonは、画面にボタンを表示するためのAPIです。
  • Buttonは、クラスもしくは(レイアウトXMLで利用できる)タグとして利用することができます。
  • Buttonクラスは、TextViewを継承しているためTextViewのメソッドを利用することができます 。
  • Buttonタグは、TextViewタグで利用可能な属性を利用することができます 。

 

 

Buttonの使い方

ボタンを表示する(Buttonタグ)

  1. Buttonタグandroid:text属性の値には、ボタンラベルの文字内容を設定します。
  2. 文字内容の設定には、strings.xmlに定義したリソースIDを用います。
  3. 例えば、以下のように文字内容をstrings.xmlに定義します。
strings.xmlで文字内容を定義
<resources>
  <string name="label">ボタン</string>
</resources>

 

  1. 次にandroid:text属性に対して、定義した文字のリソースIDを以下のように記述します。
ボタンに文字を表示する
<Button
  android:id="@+id/button"
  android:text="@string/label"
  android:layout_height="wrap_content"
  android:layout_width="wrap_content"/>

 

  1. すると以下のようにボタンが表示されます。
表示結果
表示結果

 

  1. android:text属性には、表示したい文字列を直接記述することもできます。
android:text属性に文字列を直接記述することもできる
android:text="ボタン"
表示したい文字列をandroid:text属性に直接記述することは非推奨ですので、 このような記述方法はなるべく避けるべきでしょう。

 

 

ボタンの文字を設定する(Buttonクラス)

  1. Buttonクラスを使って、ボタンの文字を設定するためにはいくつかの方法があります。
  2. 1つ目の方法は、textプロパティを使う方法です。
  3. まずはレイアウトXMLで定義したButtonのオブジェクトを取得します。
文字設定対象のButtonを取得する
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button)

 

  1. 次に、さきほど取得したButtonオブジェクトのtextプロパティに表示したい文字列を設定します。
textプロパティを使って文字表示する
button.text = "ボタン2"

 

  1. すると以下のようにボタンが表示されます。
表示結果
表示結果

 

  1. 2つ目の方法は、setText()メソッドを使う方法です。
  2. setText()メソッドには、表示したい文字列のリソースIDを引数として渡します。
setText()メソッドを使って文字表示する
button.setText(R.string.label)

 

  1. すると以下のように文字が表示されます。
表示結果
表示結果

 

  1. ボタンの文字を後から変更したい場合(※)は、Buttonクラスを用いた方法を利用するとよいでしょう。
    • ※ 何かしらの処理実行後、ボタンの状態を変更したい場合など

 

 

ボタンが押された時の処理を実行する

  1. ボタンが押された時の処理を定義したい場合は、setOnClickListener()メソッドを使用します。
  2. 引数はView.OnClickListener型で、ボタン押下時の処理を定義したオブジェクトを渡します。
  3. 以下の例は、ボタン押下時にトーストが画面に表示されるコードです。
ボタンが押された時にトーストを表示する
package com.example.sample

import android.app.Activity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast

class MainActivity : Activity() {

  private val clickListener : View.OnClickListener = View.OnClickListener {
    Toast.makeText(applicationContext, "ボタンが押されました", Toast.LENGTH_SHORT).show();
  }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val button: Button = findViewById(R.id.button)
    button.setOnClickListener(clickListener)
  }

}

 

  1. View.OnClickListener型のclickListenerプロパティを宣言し、その中でボタンが押された時の処理を記述します。
ボタンが押された時の処理を記述している
private val clickListener : View.OnClickListener = View.OnClickListener {
  Toast.makeText(applicationContext, "ボタンが押されました", Toast.LENGTH_SHORT).show();
}

 

  1. 実際にボタンが押された時に処理を実行するためには、押されるボタンであるButtonオブジェクトに、View.OnClickListenerオブジェクトをリスナーとして設定する必要があります。
ボタンオブジェクトを取得
val button: Button = findViewById(R.id.button)
button.setOnClickListener(clickListener)

 

  1. ボタンを押下すると、以下のようにトーストが表示されます。
表示結果(ボタン押下時)
表示結果(ボタン押下時)

 

 

参考情報

本リファレンス内容は、以下を参考にしています。

 

 

 

 

Programming Style