Android: Comment empêcher le clavier virtuel masqué lors de la saisie du clavier matériel
Je l'ai créé EditText
et appliqué au showSoftInput
of InputMethodManager
. Lorsque j'entre une touche physique, le clavier est automatiquement masqué.
Je souhaite empêcher le masquage automatique du clavier.
J'ai essayé la méthode ci-dessous. 1. utilisez showSoftInput Flag ImputMethodManager.SHOW_IMPLICIT
, SHOW_FORCED
2. utilisez InputConnectionWrapper
dans EditText, la chaîne et le nombre fonctionnent normalement. mais ctrl, Tab, Alt, F1, F2. La saisie d'une touche masque le clavier.
Je m'attends à ce que le clavier ne soit pas masqué lorsque j'entre la clé physique. Merci pour la lecture.
une bonne option consiste simplement à fermer le clavier logiciel lorsqu'il y a une entrée du clavier matériel
Les classes Android fournissent généralement des gestionnaires d'événements, que vous pouvez implémenter lors de leur sous-classification. La Activity
classe a les gestionnaires d'événements suivants:
onKeyDown(int keyCode, KeyEvent event)
onKeyLongPress(int keyCode, KeyEvent event)
onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
onKeyShortcut(int keyCode, KeyEvent event)
onKeyUp(int keyCode, KeyEvent event)
De plus, toutes les vues ont les gestionnaires d'événements suivants:
onKeyDown(int, KeyEvent)
onKeyUp(int, KeyEvent)
Je suppose qu'il existe de nombreuses autres classes qui ont des gestionnaires d'événements similaires pour les événements clés, mais cela devrait être suffisant pour votre situation. Le KeyEvent contient alors des informations sur la touche enfoncée, c'est-à-dire le code de la touche.
dans votre cas, vous voudrez peut-être faire quelque chose comme ceci:
in you activity
or view
class override on of onKeyDown
or onKeyUp
methods and hide the softkeyboard in there like:
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
hideSoftKeyboard()
return super.onKeyUp(keyCode, event)
}
ou vous pouvez ajouter un keyListener
pour votre edittext
mEditText.setOnKeyListener { v, keyCode, event ->
hideSoftKeyboard()
return@setOnKeyListener when (keyCode) {
KeyEvent.ACTION_UP -> {
hideSoftKeyboard()
true
}
else -> false
}
}
comment fermer softKeyword:
fun hideSoftKeyboard() {
try {
val inputMethodManager = getSystemService(
Activity.INPUT_METHOD_SERVICE
) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(
currentFocus!!.windowToken, 0)
} catch (e: Exception) {}
}