12

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

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

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

4

4 に答える 4

30

問題が見つかりました。inputType を「number」に設定したため、スペースの追加は黙って失敗しました。

于 2011-02-07T19:29:23.053 に答える
14

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

これが私のために働いたサンプルコードです:

@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
}
于 2015-11-13T02:19:40.590 に答える
1

試す:

Editable s = getLatestEditable();
Log.d(TAG, "inserting space at " + location);
s.insert(location, " ");
Log.d(TAG, "new word: '" + s + "'");
于 2011-02-07T18:26:54.023 に答える