EditText

EditTextのクラス階層

  • TextView
    • EditText
      • AutoCompleteTextView
        • MultiAutoCompleteTextView
      • ExtractEditText

属性 (Attribute)

ユーザーからの入力を制御するため、android:inputTypeを設定すべきです。

TextViewの属性

メソッド (Method)

setText

TextViewのsetText

イベントリスナー

TextViewのイベントリスナー

テキストの変更検知 (addTextChangedListener)

editText.addTextChangedListener( new TextWatcher() {

    // 文字列sのなかで startの位置から開始されている字数countの文字が、
    // 字数lengthの古いテキストを置換するときに呼び出される。
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    }

    // 文字列sのなかで startの位置から開始されている字数countの文字が、
    // 字数lengthの新しいテキストで置換されようとしているときに呼び出される。
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    // 文字列sのどこかで、テキストが変更されたときに呼び出される。
    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
    }
} );

TextWatcherインターフェイスは3つの抽象メソッドを持つため、必ずこの3つのメソッドを実装します。TextWatcher | Android Developers

これらのメソッドは、

  1. beforeTextChanged … 変更前
  2. onTextChanged … 変更直前
  3. afterTextChanged … 変更後

の順で呼び出されます。またsetText()でテキストを変更した場合にも、これらのメソッドのすべてが呼び出されます。

検証

イベントの発生とその引数について検証してみます。イベント名は「TextChanged」の部分を省いて記述します。また引数は、上記のサンプルコードの引数に対応します。

直接入力の状態

1. テキストが空白の状態で、setText( "ABC" )を実行する。

イベント 引数
s start before after count
before   0   3 0
on ABC 0 0   3
after ABC        

2. 末尾に「1」と入力する。

イベント s start before after count
before ABC 3   1 0
on ABC1 3 0   1
after ABC1        

3. テキストの[BC]の部分を選択し、「2」と入力する。

イベント s start before after count
before ABC1 1   1 2
on A21 1 2   1
after A21        

変換入力の状態

1. テキストが空白の状態で、「a」と入力する。

イベント 引数
s start before after count
before   0   1 0
on a 0 0   1
after a        

2. 変換候補が表示される。

イベント s start before after count
before a 0   1 1
on a 0 1   1
after a        

3. 変換候補から「about」を選択する。

イベント s start before after count
before a 0   5 1
on about 0 1   5
after about        

4. 結果が表示される。

イベント s start before after count
before about 5   1 0
on about 5 0   1
after about        

テキストの変更検知の中止 (removeTextChangedListener)

public void removeTextChangedListener (TextWatcher watcher)
Androidの情報サイトから、まとめて検索