Genta Hirauchi

公開日:2020/02/13
更新日:2020/08/03

【Kotlin基礎】Buttonでボタンを実装する方法を解説

  • Kotlinでボタンを表示させる方法が知りたい。
  • xmlではなく、コードで実装する方法が知りたい。
  • ボタンにクリックイベントを実装する方法が知りたい。

Kotlinには、Buttonというボタンを実装するViewがあります。

本記事では、Buttonの実装方法やボタンにクリックイベントを実装する方法を、サンプルコードを交え、わかりやすく解説しております。

目次

Buttonでボタンを実装する方法

Kotlinでボタンを実装するには、ButtonというViewを使用します。

【公式ドキュメント】 : Button | Android Developers

Buttonを実装するには、xmlで実装する方法と、コードで動的に実装する方法があります。

xmlでButtonを実装する

まずは、xmlで実装する方法を紹介致します。xmlで実装するには、以下のように実装します。

  • xmlで実装
<Button
   android:text="ボタン"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />

<Button/>タグで、Buttonを実装します。

Buttonのテキストは、android:textで指定します。

Point
  • <Button/>タグで、Buttonを実装する
  • Buttonのテキストは、android:textで指定する

コードで動的にButtonを実装する

続いて、コードで動的に実装する方法を紹介致します。コードで動的に実装するには、以下のように実装します。

  • コードで実装
val button = Button(this)
button.text = "ボタン"
button.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)

val linearLayout = findViewById<LinearLayout>(R.id.container)
linearLayout.addView(button)

Button()で、Buttonのインスタンスを生成しております。

Buttonのテキストは、textまたは、setText()で指定します。

また、このButtonを画面に表示させるには、Viewとして追加する必要があります。
Viewとして追加するには、addView()を使用します。サンプルでは親レイアウトのlinearLayoutに、Buttonを追加しております。

Point
  • コードで実装するには、Button()でインスタンスを生成した後、addView()で追加する
  • コードでテキストを指定するには、textまたはsetText()を使用する

Buttonにクリックイベントを実装する方法

クリックイベントを実装する

続いて、Buttonにクリックイベントを実装する方法を紹介致します。Buttonにクリックイベントを実装するには、setOnClickListenerを使用します。

以下は、Buttonをクリックすると、トーストが表示されるサンプルコードです。

  • MainActivity.kt
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
   Toast.makeText(this, "クリックされました。", Toast.LENGTH_SHORT).show()
}

setOnClickListenerの後のブロック{ }内に、クリックされた時に行いたい処理を実装します。

Point
  • Buttonにクリックイベントを実装するには、setOnClickListenerを使用する
  • クリックされた時に行いたい処理は、setOnClickListenerの後のブロック{ }内に実装する

クリックイベントの有効・無効を切り替える

最後に、クリックイベントの有効・無効を切り替える方法を紹介致します。クリックイベントの有効・無効を切り替えるには、isClickableを使用します。

  • MainActivity.kt
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
   Toast.makeText(this, "クリックされました。", Toast.LENGTH_SHORT).show()
}
button.isClickable = false

isClickableにfalseを指定すると、クリックが無効になります。trueを指定すると、有効になります。

注意しなければならないのは、isClickableを実装するタイミングです。
例えば、isClickable = falseの処理をsetOnClickListenerの処理より前に実装した場合、クリックは有効になります。これは、setOnClickListenerが、内部で「isClickableがfalseであれば、trueに変更する」という処理を行っているからです。

Point
  • クリックイベントの有効・無効を切り替えるには、isClickableを使用する

まとめ

  • xmlでButtonを実装するには、<Button/>タグを使用する
  • xmlでButtonのテキストを指定するには、android:textを使用する
  • コードでButtonを実装するには、Button()でインスタンスを生成した後、addView()で追加する
  • コードでButtonのテキストを指定するには、textまたはsetText()を使用する
  • クリックイベントの有効・無効を切り替えるには、isClickableを使用する