Android: программное отключение автокоррекции в EditText

Встала задачка – отключить автокоррекцию ввода в EditText. Пару часов провозился…зря =_=

Бывает, что необходимо отключить автокоррекцию. Если у юзера на устройстве T9 отрублен, то траблов нет. А как программно это сделать? Я уже писал про TextWatcher для обработки ввода в EditText. Как пример, можно бы было перед редактирование в beforeTextChanged установить указатель в начало строки setSelection(0), а в afterTextChanged установить на редактируемое место. Не прокатит, да и все возможные вариации с setSelection не прокатят. А простого метода для отмены выделения, типо clearSelection нету. Что же делать? Оказалось всё до безобразия просто.

Для типа textVisiblePassword автокоррекции нету. Ну…ясно, пароль и всё такое. Так что, если хотим отрубить автокоррекцию, то просто в xml в inputType элемента напишем это:

  android:inputType="text|textVisiblePassword"

Или программно зададим:

textEdit.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

На устройствах работает нормально, но на некоторых эмуляторах нет. Ясно, что для тестирования приложения вы не станете покупать все варианты устройств. Не пойму, зачем выделение и простую установку указателя объединили одним методом и не предусмотрели очистку выделения =/

  Категории: Android, Коддинг
  • Andy

    была подобная проблема, решилась вот так: android:inputType=”text|textNoSuggestions”