Android: Comment empêcher le clavier virtuel masqué lors de la saisie du clavier matériel


Joon

Je l'ai créé EditTextet appliqué au showSoftInputof 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_FORCED2. utilisez InputConnectionWrapperdans 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.

Easazade

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 Activityclasse 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 activityor viewclass override on of onKeyDownor onKeyUpmethods 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 keyListenerpour 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) {}
}    

Articles connexes