ユーザーからの入力を制御するため、android:inputTypeを設定すべきです。
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
これらのメソッドは、
の順で呼び出されます。また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 |
public void removeTextChangedListener (TextWatcher watcher)