265 votes

Désactiver la vue d'édition en plein écran pour la saisie au clavier dans le paysage?

Sur les appareils Android qui utilisent des claviers, je veux éviter le plein écran clavier en mode édition (voir ci-dessous) d'apparaître lorsqu'en mode paysage (c'est à dire je veux voir uniquement le clavier lui-même et de mon point de vue).

Je suppose que cela peut être réalisé à l'aide de l' setExtractViewShown(false) méthode InputMethodService, mais je suis incapable d'accéder à l'instance par défaut de cela, et ne souhaitez pas mettre en place une coutume de méthode d'entrée.

Android fullscreen editing view

Edité pour ajouter: la vue de l'entrée qui se passe n'est pas un TextView ( View avec une coutume InputConnection mise en œuvre), alors android:imeOptions="flagNoExtractUi" ne marchera pas ici.

186voto

jnic Points 3149

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 à l'endroit où la connexion d'entrée est connectée:

 @Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}
 

129voto

abrasadera Points 1216

Pour ce faire, naviguez simplement dans l'activité xml et collez android:imeOptions="flagNoExtractUi" dans votre code. Hmm assez simple - mais où le hac devrait-il être collé? Regardez le code de l'activité exemple xml et regardez EditText:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"         
    >

    <EditText
        android:imeOptions="flagNoExtractUi"
        android:id="@+id/etTextInAct"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >   
        <requestFocus />
    </EditText>

</LinearLayout>
 

Si vous voulez plus d'options de personnalisation pour le clavier, voir http://developer.android.com/guide/topics/ui/controls/text.html

67voto

mike yaworski Points 5144

Ajoutez la propriété android:imeOptions="flagNoExtractUi" à chaque EditText dans votre fichier XML .

56voto

Abdo Points 3360

La réponse ci-dessus m'a aidé à trouver la solution pour les EditTexts ajoutés dynamiquement:

 editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
 

44voto

ridoy Points 2612

Utilisez android:imeOptions="flagNoFullscreen" pour atteindre cette fonctionnalité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X