[Android] 入力を監視するTextWatcher

Android7 

TextWatcherはEditTextの文字入力を監視します。ユーザーは文字入力を確定しないまま次に行ってしまうケースがあります。あえて確定しないと入力できないようにするか、文字を監視して入力が終わったとか文字数が越えているなどはEditText にTextWatcherを実装することで実現できます。
 
これは8文字を超えると、「文字数オーバー」と表示を出す例です
 

device-2016-11-29-144315
device-2016-11-29-144049
Android Studio 2.2.2
Android 7.1.1

sponsored link

TextWatcher

 
TextWatcherの設定方法を見ていきます。

 
とすると以下のメソッドが呼び出されます。

  1. beforeTextChanged(CharSequence s, int start, int count,int after)
    • 入力された文字列が、修正される直前に呼び出されるメソッド
    • CharSequence s
      • 現在EditTextに入力されている文字列
    • int start
      • sの文字列で新たに追加される文字列のスタート位置
    • int count
      • sの文字列の中で変更された文字列の総数
    • int after
      • 新規に追加された文字列の数
  2. onTextChanged(CharSequence s, int start, int before, int count)
    • 文字1つを入力した時に呼び出される
    • CharSequence s
      •  現在EditTextに入力されている文字列
    • int start
      •  sの文字列で新たに追加される文字列のスタート位置
    • int before
      • 削除される既存文字列の数
    • int count
      • 新たに追加された文字列の数
  3. afterTextChanged(Editable s)
    • 最後にこのメソッドが呼び出される
    • Editable s
      • 最終的にできた修正可能な、変更された文字列

リアルタイムで文字入力の前、最中、後と設定ができるわけです。

実際にコードを記述すると

MainActivity.java

 
activity_main.xml

 
テキストの文字入力数をカウントするくらいなら
afterTextChanged(Editable s)
が一番簡単です
他はちょっと扱いづらい
 

関連ページ: