2009-10-02 6 views

Répondre

39

Ajouter 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 lors du démarrage de l'application même si elle n'y est pas fixe mais peut être rejeté 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

+0

J'ai essayé d'utiliser le code source android et je peux faire glisser le clavier mais je ne sais pas quelle partie je devrais modifier pour le désactiver de se cacher. Je regarde la classe sous LatinIME.java. J'ai essayé d'ajouter l'inputView de ce code google à un WindowManager.addView. – LittleFunny

+0

@Simon Voir ma mise à jour à ma réponse. Vous voulez probablement utiliser KeyboardView. – Intrications

10

Vous devez avoir un EditText dans votre mise en page et qui doit étendre EditText classe de base. Remplacez ensuite la méthode onKeyPreIme() et renvoyez True. Maintenant, votre clavier sera toujours visible et ne peut pas être rejeté par la touche Retour.

Attention: En raison de votre onKeyPreIme() méthode retourne 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 developer

0

J'ai trouvé une manière qui fonctionne pour moi de garder le clavier souple visible après une modification dans mon myEditText domaine de la classe EditText. Le trick est de override la method onEditorAction afin que le retourne true

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

ou else have onEditorAction return true seulement après le "Done" clic key (IME_ACTION_DONE) otherwise 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 this answer sur la méthode onEditorAction)

Ajout du code android:windowSoftInputMode="stateAlwaysVisible au fichier manifeste avoir le clavier virtuel affiché au début de l'activité mais cela ne l'a pas empêché de disparaître à chaque fois que la touche "Terminé" a été cliquée après une modification.

Questions connexes