2015-06-03 1 views
1

Я хочу отобразить EditText, который будет редактироваться в основном путем выбора его частей и нажатия кнопок для ввода новых значений. (Значения - это длинные шестнадцатеричные строки, которые я не хочу, чтобы пользователь должен был печатать.) Поэтому я хочу подавить отображение мягкой клавиатуры, если пользователь не намеренно вызывает ее.EditText: подавить мягкую клавиатуру, но разрешить выбор и курсор?

This question описывает почти то же требование, но accepted answer не работает на Android 5.1. Когда режим ввода изменяется на InputType.TYPE_NULL, EditText отключает все функции редактирования, а не только мягкую клавиатуру. Нет курсора, нет выбора перетаскивания мышью и т. Д.

Переопределение onCheckIsTextEditor(), как предложено в this answer, ведет себя аналогичным образом.

Есть ли способ сделать это на Android 5?

ответ

2

Это был добавлен в API 21:

EditText editText = (EditText) findViewById(R.id.edittext); 
editText.setShowSoftInputOnFocus(false); 

Согласно grepcode, этот метод был скрыт, но присутствует, начиная с версии 4.1.1. Таким образом, вы можете аннотировать метод, который называет его @TargetApi(Build.VERSION_CODES.LOLLIPOP), и защищать сам вызов с помощью if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN).

+0

Отлично работает. Когда часть текста выбрана, в верхней части экрана открывается вид в виде ящика с кнопками «выбрать все», «вырезать» и «вставить». Я могу жить с этим. –

+0

Я отредактировал ответ, чтобы объяснить реальную причину, по которой он работает на более низких API. Это не имеет ничего общего с библиотекой поддержки. –

 Смежные вопросы

  • Нет связанных вопросов^_^