Help us understand the problem. What is going on with this article?

【Kotlin】Activityからボタンのクリックを無効にする

Activityからボタンのクリックを無効にするにはisClickableを使います。

良い例
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            Toast.makeText(applicationContext, "ボタンをクリックしました", Toast.LENGTH_SHORT).show()
        }

        // クリックを無効にする
        button.isClickable = false
    }
}

注意点としては、setOnclickLisnter後に記述すること
setOnclickLisnterがクリックのフラグをtrueに変更してしまうためです。
android - Button.setClickable(false) is not working - Stack Overflow

悪い例
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 無効にならない
        button.isClickable = false

        button.setOnClickListener {
            Toast.makeText(applicationContext, "ボタンを押しました", Toast.LENGTH_SHORT).show()
        }
    }
}

ちなみに、iOSだとisEnable=trueを設定したボタンは文字色がグレーになるので非活性だとわかりやすいのですが、
Androidではクリックが有効であれ無効であれ見た目は変わらないので、別途ボタンの色や透明度を変更してあげる必要がありそうです。

追記

isEnabledを使えば、文字色がグレーになることがわかりました!
isClickableと違ってリスナーの影響は受けないようなので、前後どちらに書いても大丈夫です。)

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // クリックを無効にする + 文字のグレーアウト
        button.isEnabled = false

        button.setOnClickListener {
            Toast.makeText(applicationContext, "ボタンを押しました", Toast.LENGTH_SHORT).show()
        }
    }
}

単にクリックを無効化したい場合はisClickableを使い、その上でユーザーに使えないよと示したい場合にはisEnabledを使うと良さそうだなと思いました。
ご指摘頂いた @entan05 さん、ありがとうございました:sparkles:

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away