wandering-engineer.tech
【Android】TextWatcherで入力文字数をカウントする機能追加【kotlin】
自作TwitterクライアントアプリTwitMorse 〜モールス信号でつぶやこう〜に新規機能を追加しました。 それも文字数カウント機能。 AndroidではTextWatcherなるものを使って入力文字数の変化を取得できます。 文字カウント機能とは つぶやき画面で文字数をカウントする機能をToastでしか表示していなかったため、UI的にも文字数オーバーしたかどうかが分かりづらかったのです。 特に、普通の文章をモールス信号に変換するだけでも一気に文字数が増えるので、これはいつか入れないとな、と思っていた機能でした。 これです。入力文字数が140文字を超えたら赤文字にしてユーザーに投稿エラーになることを見えるようにしておきます。 TextWatcherの実装 自分の場合はまず、以下のようにTextWatcherの準備をする機能をつけておき、ActivityのonCreateメソッド付近で呼んでおきます。 /** * setup textWatcher */ private fun setTextCounter() { mTextCounter = findViewById(R.id.textWatcher) // 最初に0にしておく mTextCounter.text = getString(R.string.input_text_count).format("0") mInputText!!.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { // 今回は実装しない } override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { // 今回は実装しない } override fun afterTextChanged(p0: Editable?) { mTextCounter.text = getString(R.string.input_text_count).format(p0!!.length.toString()) if (p0.length > 140) {