#android
#Android
Вопрос:
В моем приложении есть виджет EditText, который я установил только для чтения, и я хочу знать, когда пользователь долго нажимает на него. Я не хочу, чтобы виртуальная клавиатура всплывала, если пользователь нажимает на этот виджет.
Чтобы остановить отображение виртуальной клавиатуры, я использую это:
EditText text = (EditText)findViewById(R.id.editText01); EditText.setClickable(false);
Это работает, но я не могу получать сообщения о длительном нажатии, если я использую OnLongClickListener().
Кто-нибудь знает, как я могу предотвратить появление всплывающей клавиатуры, но при этом получать события длительного нажатия?
Спасибо.
ОТРЕДАКТИРОВАНО: я действительно попробовал первые два ответа, предоставленные на этот вопрос, и ни один из них не сработал. В итоге я сделал следующее: для виджета EditText я использовал следующее:
editText.setInputType(InputType.TYPE_NULL);
editText.setCursorVisible(false);
editText.setOnLongClickListener(mOnLongClickListener);
Вызов метода setInputType() отключает щелчки по виджету. Процедура setOnLongClickListener() будет обрабатывать все события длительного нажатия в виджете, и я возвращаю true из этой процедуры, которая в основном использует событие длительного нажатия. Итак, теперь у меня есть виджет EditText, при нажатии на который не будет всплывать виртуальная клавиатура, но длительное нажатие на этот виджет вызовет мой метод прослушивания.
Ответ №1:
button.setOnLongClickListener (View.OnLongClickListener l(){
//override the method
//then do this
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
});
Ответ №2:
Попробуйте использовать это и доступные опции.
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Моя проблема заключалась в том, что при запуске моей активности автоматически появлялся kepyboard, если есть EditText. Итак, я использовал приведенное выше в onCreate(). Попробуйте использовать другие параметры вместо «.SOFT_INPUT_STATE_ALWAYS_HIDDEN»