Sur les appareils Android qui utilisent des claviers logiciels, je veux empêcher la vue d'édition du clavier en plein écran (illustrée ci-dessous) d'apparaître en mode paysage (c'est-à-dire que je veux voir uniquement le clavier logiciel lui-même et ma vue derrière).
Je suppose que cela peut être réalisé en utilisant la setExtractViewShown(false)
méthode InputMethodService
, mais je ne peux pas accéder à l'instance par défaut de cela et je ne veux pas implémenter une méthode d'entrée personnalisée.
Modifié pour ajouter: la vue vers laquelle l'entrée va n'est pas un TextView
(c'est un View
avec une InputConnection
implémentation personnalisée ), donc android:imeOptions="flagNoExtractUi"
ne fonctionnera pas ici.
flagNoExtractUi
ouIME_FLAG_NO_EXTRACT_UI
. Cependant, dans la documentation deIME_FLAG_NO_EXTRACT_UI
, qui correspond àflagNoExtractUi
, il indique que «l'utilisation de cet indicateur est déconseillée et peut devenir obsolète à l'avenir», de même queflagNoFullscreen
l'option recommandée.Réponses:
J'ai finalement répondu à ma propre question:
L'interface utilisateur d'extraction (c'est-à-dire le mode d'édition plein écran) peut être désactivée au point où la connexion d'entrée est connectée:
la source
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Pour ce faire, accédez à l'activité xml et collez
android:imeOptions="flagNoExtractUi"
votre code. Mais où doit-il être collé? Regardez le code de l'exemple d'activité XML et regardez EditText:Si vous souhaitez plus d'options de personnalisation pour le clavier, voir http://developer.android.com/guide/topics/ui/controls/text.html
la source
ajoutez la propriété
android:imeOptions="flagNoExtractUi"
à chacunEditText
dans votreXML
fichier.la source
La réponse ci-dessus m'a aidé à trouver la solution pour EditTexts ajouté dynamiquement:
la source
Utilisez
android:imeOptions="flagNoFullscreen"
pour atteindre cette fonction.la source
IME_FLAG_NO_EXTRACT_UI
, qui correspond àflagNoExtractUi
, il indique que «l'utilisation de cet indicateur est déconseillée et peut devenir obsolète à l'avenir», il enflagNoFullscreen
est de même pour l'option recommandée.De plus, si vous souhaitez combiner plusieurs imeOptions par programmation, vous pouvez utiliser le | syntaxe.
Par exemple, pour désactiver la vue d'édition en plein écran en paysage et remplacer la touche "Suivant" par "OK" (ACTION_DONE) dans le clavier, vous pouvez utiliser:
la source
Si vous modifiez directement l'IME, vous pouvez l'empêcher d'afficher jamais une vue extraite en remplaçant
onUpdateExtractingVisibility
:la source
Je sais qu'il est un peu tard, mais pour tous ceux qui sont toujours intéressés, voici ma solution: dans mon cas, j'avais une activité paysage contenant un EditText en haut et j'avais besoin d'implémenter la fonctionnalité de saisie semi-automatique dans cette activité de recherche , qui se chevauchait le clavier a causé un problème que l'utilisateur n'a pas pu voir le résultat de RecyclerView . J'ai donc fini par avoir cet EditText dans ma mise en page:
À votre santé!
la source
Ma solution:
la source
Vous pouvez utiliser :
dans votre edittext
la source
Vous pouvez appeler pour masquer le clavier virtuel et effacer la mise au point de la vue de recherche.
la source