132 votes

Ouvrir le clavier logiciel par programmation

J'ai une activité sans widgets enfants et le fichier XML correspondant est,

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="true"
>
</LinearLayout>
 

et je veux ouvrir un clavier logiciel par programmation pendant que l'activité commence. Et ce que j'ai déjà essayé, c'est

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if (inputMethodManager != null) {
        inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    }
 

Donnez-moi des conseils.

156voto

Vignesh Points 598

J'ai utilisé les lignes suivantes pour afficher manuellement le clavier virtuel dans l'événement onclick, et le clavier est visible.

 InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInputFromWindow(linearLayout.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
 

mais je ne peux toujours pas ouvrir ceci pendant que l'activité est ouverte, donc il n'y a pas de solution pour cela.

126voto

jemerick Points 712

Dans votre fichier manifeste, essayez d’ajouter ce qui suit au <activity> que vous souhaitez afficher au clavier lorsque l’activité commence:

android:windowSoftInputMode="stateVisible"

Cela devrait rendre le clavier visible au début de l'activité.

Pour plus d'options, consultez la documentation .

39voto

AndroidDanger Points 579

Bonjour Vignesh, veuillez suivre le code ci-dessous Je suis sûr que votre problème est résolu ....

                if (imm != null){
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
          } 
 

28voto

ahtartam Points 156

C'est des travaux

 <activity
    ...
    android:windowSoftInputMode="stateVisible" >
</activity>
 

ou

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
 

12voto

Benites Points 98

Mettez cela dans la méthode onResume:

 findViewById(R.id.root_view_of_your_activity_layout).post(
new Runnable() {
    public void run() {
        InputMethodManager inputMethodManager =  (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.toggleSoftInputFromWindow(yourEditText.getApplicationWindowToken(),     InputMethodManager.SHOW_FORCED, 0);
        yourEditText.requestFocus();
    }
});
 

Le fichier exécutable est nécessaire car lorsque le système d'exploitation déclenche la méthode onResume, vous ne pouvez pas être sûr que toutes les vues sont dessinées. Par conséquent, la méthode post appelée à partir de votre présentation racine fait patienter jusqu'à ce que chaque vue soit prête.

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