[Публикация нового ответа, так как я не могу прокомментировать ответ Иосифа.]
Входной фильтр работает нормально, но она имеет тонкую ошибку в нем: набрав над выбором будет удалить весь текст.
Например, у вас есть текст "foo"
в EditText
. Если вы выберете все (например, дважды щелкнув по нему) и введите 'a'
, текст исчезнет. Это происходит потому, что InputFilter
будет называться:
filter("a", 0, 1, "foo", 0, 3);
Предлагаемый входной фильтр возвращает пустую строку в этом случае (поскольку src.length() < 1
является false
), что объясняет недостающий текст.
Решение состоит в том, чтобы просто вернуть dst.subSequence(dstart, dend)
в функцию фильтра. Это будет нормально работать даже для удаления.
Это не работает должным образом. В этом решении, когда вы нажимаете на правильное предложение слова, выбранное слово удаляется. – Augiwan
не удалось проверить это atm, но похоже, что @dlazar уже распознал эту проблему и предложил решение - добавлено это к ответу –
Можно ли сделать наоборот? (Сделайте editText EDITABLE) –