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.
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
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);
}
}
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.