serso
@serso

EditText без виртуальной клавиатуры?

Мне хотелось бы использовать компонент EditText и все его методы без задействия виртуальной клавиатуры. Другими словами, при клике по полю (его фокусировке) я не хочу чтобы всплывала виртуальная клавиатура. При этом мне нужно чтобы работал курсос, выделени текста, скроллинг и т.д.


До 3ьей версии андроида данная проблема решалась мною переопределением метода TextView#onCheckIsTextEditor() и возращением false. Но начиная с 3ьей версии изменилось поведение TextView, а именно, проверка состояния курсора (его видимости) начала также проверять свойство TextView#onCheckIsTextEditor() (метод TextView#isCursorVisible() начал вызыввать метод TextView#onCheckIsTextEditor()) и как следствие — курсос пропал. Остальное поведение компонента не изменилось.


Быстрое и очень «грязное» решение — поверять stack trace и возвращать разное значение при вызове кода из разных методов (в случае вызова из под TextView#isCursorVisible() возвращать true, иначе — false). Проблемный код здесь


1. Есть ли другие нормальные (и, желательно, простые) способы решения данной проблемы?

2. Нормальное ли это поведение со стороны разработчиков андроида менять поведение базовых компонентов?
  • Вопрос задан
  • 8876 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
Чтобы просто не показывалась клавиатура нужно сделать
editText.setInputType(InputType.TYPE_NULL);

Если при этом нужно блокировать ввод (клавиатуру можно и принудительно вызвать), нужно в вашем классе добавить метод:
public boolean getDefaultEditable() {
    return false;
}
или в xml к описанию EditText элемента добавить
android:editable="false"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы