236 votes

Comment puis-je définir le focus (et afficher le clavier) sur mon EditText par programme

J'ai une mise en page qui contient des vues comme celle-ci :

 <LinearLayout>
<TextView...>
<TextView...>
<ImageView ...>
<EditText...>
<Button...>
</linearLayout>

Comment puis-je définir le focus (afficher le clavier) sur mon EditText programmation ?

J'ai essayé cela et cela ne fonctionne que lorsque je lance mon Activity normalement, mais lorsque je le lance dans un TabHost , cela ne fonctionne pas.

 txtSearch.setFocusableInTouchMode(true);
txtSearch.setFocusable(true);
txtSearch.requestFocus();

437voto

David Merriman Points 1333

Essaye ça:

 EditText editText = (EditText) findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

http://developer.android.com/reference/android/view/View.html#requestFocus()

183voto

ungalcrys Points 149

utiliser:

 editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

61voto

Danilo Raspa Points 437

Cela a fonctionné pour moi, Merci à ungalcrys

Afficher le clavier :

 editText = (EditText)findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager)getSystemService(this.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);

Masquer le clavier :

 InputMethodManager imm = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

57voto

Kunal Bhatia Points 601
final EditText tb = new EditText(this);
tb.requestFocus();
tb.postDelayed(new Runnable() {
    @Override
    public void run() {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.showSoftInput(tb, InputMethodManager.SHOW_IMPLICIT);
    }
}, 1000);

44voto

vincebodi Points 21

showSoftInput ne fonctionnait pas du tout pour moi.

J'ai pensé que je devais définir le mode d'entrée : android:windowSoftInputMode="stateVisible" (ici dans le composant Activity dans le manifeste)

J'espère que cette aide!

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