2011-02-07 13 views
9

私は何か明白なことをしているに違いないが、それが何であるか把握できません。私は単に編集可能に文字を挿入しようとしています:編集可能に挿入できません

@Override 
public void afterTextChanged(Editable s) { 
    Log.d(TAG, "inserting space at " + location); 
    s.insert(location, " "); 
    Log.d(TAG, "new word: '" + s + "'"); 
} 

しかし、決して変更はありません。私はそれを印刷し、それは良いように、文字列 's'は十分に長いです。 Editable.clear()を呼び出すと、それがクリアされ、複数の文字をEditable.replace()に置き換えることができます。アイデア?

答えて

25

私は問題を発見しました。私はinputTypeを "number"に設定していたので、空白を追加すると失敗しました。

+0

inputTypeが "number"のEditTextにスペースを追加する方法はありますか? –

+0

はい、下記の私の答えを参照してください。入力フィルタを一時的にクリアします。 – BeccaP

+1

'number'の代わりに' android:inputType = "phone" 'を使うことができます。数字は表示されますが、隣に小さい文字が表示されます。私は普通のユーザーは違いを認識しないと言うでしょう。 – Syex

1

試してみてください。

Editable s = getLatestEditable(); 
Log.d(TAG, "inserting space at " + location); 
s.insert(location, " "); 
Log.d(TAG, "new word: '" + s + "'"); 
+0

なし申し訳ありませんが、getEditable()は、私自身の方法です。実際にはこれはTextWatcher.afterTextChanged(Editable s)のコールバックです –

9

編集可能な入力フィルタを編集するには、現在のフィルタを保存してクリアし、テキストを編集してからフィルタを復元するだけです。ここで

は私のために働いていたいくつかのサンプルコードです:

@Override 
public void afterTextChanged(Editable s) { 
    InputFilter[] filters = s.getFilters(); // save filters 
    s.setFilters(new InputFilter[] {});  // clear filters 
    s.insert(location, " ");    // edit text 
    s.setFilters(filters);     // restore filters 
} 
+0

これは私のために働いた!ハッキーに受け入れられた答えよりはるかに良い解決策。 – CrashproofCode

関連する問題