2015-12-09 4 views
2

У меня есть EditText, который не должен позволять пользователю вводить что-либо через клавиатуру (мягкую или жесткую). Этот EditText должен позволять пользователю вводить что-либо через клавиши (кнопки), отображаемые на экране приложением. Я отключил мягкую клавиатуру, но я не могу найти способ отключить ввод аппаратной клавиатуры. Этот ввод через аппаратную клавиатуру можно выполнить с помощью эмулятора, который настроен на вход через аппаратную клавиатуру. Итак, мой вопрос: как заблокировать вход через физическую клавиатуру в EditText? Спасибо!Блокировка ввода физической клавиатуры в EditText

+0

TextView? Разве вы не имеете в виду EditText? –

+0

Зачем использовать «EditText» в первую очередь, если пользователь не может его использовать? – CommonsWare

+0

Извините за TextView, не знаю, что я имел в виду, когда впервые написал это, исправлено. @CommonsWare пользователь может использовать его, разница в том, как производится ввод. Это не сделано с помощью мягкой клавиатуры, она создается некоторыми клавишами, которые приложение отображает на экране. –

ответ

2

Наконец-то получил!
Код:

editText.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      return true; 
     } 
    }); 

Объяснение:
Возвращение верно будет сказать слушателю, что я уже обработал ввод аппаратной клавиатуры. На основе Android документации (http://developer.android.com/reference/android/view/View.OnKeyListener.html)

View.OnKeyListener: Определение интерфейса для обратного вызова, которая будет вызвана при аппаратного ключ событие отправляется с этой точкой зрения. Обратный вызов будет вызван до того, как ключевое событие будет передано в представление. Это полезно только для аппаратных средств ; метод ввода программного обеспечения не обязан инициировать этот слушатель.

OnKey (View v, внутр KEYCODE, KeyEvent событие) Вызывается, когда аппаратный ключ отправляется на вид.

+1

Это работает, но, к сожалению, перехватывает даже навигационные нажатия клавиш, когда поле фокусируется. Поэтому, если пользователь использует аппаратную клавиатуру для навигации, они застревают в поле. –

+0

Привет @ damien5314 для моего дела работал отлично, потому что пользователь не должен использовать аппаратную или мягкую клавиатуру для взаимодействия с этим полем специально. Вы должны оценить, является ли это вашим делом. –

1

Вы можете попробовать их в соответствии с тем, что вы хотите в вашем XML макет

android:longClickable="false" 
android:clickable="false"  
android:cursorVisible="false" 
android:editable="false" 

Затем сделать EditText показать, что пользователь вводит с помощью клавиатуры вы сделали в приложении.

+0

Спасибо за ваш ответ! К сожалению, это не сработало. =/ Я также пытался избежать первоначального сосредоточения на этом edittext, но если я начну вводить что-либо на моей клавиатуре, поле начинает заполняться. –

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