web-dev-qa-db-fra.com

Android: comment rendre le clavier toujours visible?

Sous Android, comment rendre le clavier de l'appareil toujours visible dans l'application? La partie supérieure affiche le contenu que l'application souhaite rendre et la partie inférieure affiche toujours le clavier.

32
Prabhu R

Ajoutez Android: windowSoftInputMode = "stateAlwaysVisible" à votre activité dans le fichier AndroidManifest.xml:

<activity Android:name=".MainActivity"
Android:label="@string/app_name"
Android:windowSoftInputMode="stateAlwaysVisible" />

Dans mon application de test, cela montre le clavier au démarrage de l'application bien qu'il ne soit pas corrigé mais peut être ignoré en appuyant sur le bouton de retour.

Pour vous assurer que le clavier est toujours visible, vous devrez peut-être créer votre propre clavier dans le cadre de l'interface utilisateur de votre application. Voici un tutoriel pour vous montrer comment faire cela avec KeyboardView: http://www.fampennings.nl/maarten/Android/09keyboard/index.htm

46
Intrications

Vous devez avoir un EditText dans votre disposition et qui doit étendre la classe de base EditText. puis remplacer la méthode onKeyPreIme() et retourner Vrai. Maintenant, votre clavier sera toujours visible et ne peut pas être ignoré par la touche Retour.

Attention : En raison de votre méthode onKeyPreIme() renvoie true vous ne pouvez pas quitter votre application en utilisant la touche retour.

Exemple:

public class CustomEdit extends EditText {

    public CustomEdit(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        Log.e("Log", "onKeyPreIme");
        return true;
        //return super.onKeyPreIme(keyCode, event);
    }
}

onKeyPreIme () - Android

10
Favas Kv

J'ai trouvé un moyen qui fonctionne pour moi de garder le clavier logiciel visible après une modification dans mon champ myEditText de la classe EditText. L'astuce consiste à remplacer la méthode onEditorAction pour qu'elle renvoie true

  myEditText.setOnEditorActionListener(new OnEditorActionListener() {                     
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      return true;
    }       
  });

ou bien avoir onEditorAction retourner true uniquement après avoir cliqué sur la touche "Terminé" ( IME_ACTION_DONE ) sinon false

  myEditText.setOnEditorActionListener(new OnEditorActionListener() {                     
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      if(actionId==EditorInfo.IME_ACTION_DONE){
        Log.i(LOG_TAG, "IME_ACTION_DONE");
        return true;    
      }
      return false;
    }       
  });

(voir aussi cette réponse sur la méthode onEditorAction)

Ajouter Android:windowSoftInputMode="stateAlwaysVisible dans le fichier manifeste a aidé à afficher le clavier virtuel au démarrage de l'activité, mais cela ne l'a pas empêché de disparaître à nouveau lorsque la touche "Terminé" a été cliquée après une modification.

1
user2314737