J'ai un EditText que je suis en train de passer au focus par programme. Mais quand je le fais, je veux que le clavier apparaisse aussi (et qu'il baisse ensuite lorsque EditText perd le focus). Pour le moment, l'utilisateur doit cliquer sur EditText pour afficher le clavier, même si EditText a déjà le focus.
Voici comment je montre le clavier:
EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
<activity Android:name=".YourActivity"
Android:windowSoftInputMode="stateVisible" />
Ajouter ceci au fichier manifeste ...
configurez ceci pour que votre activité dans votre manifeste apparaisse automatiquement au clavier lorsque votre écran contient la boîte de dialogue EditText
<activity Android:windowSoftInputMode="stateAlwaysVisible" ... />
Pour masquer le clavier en cas de perte du focus, définissez OnFocusChangeListener pour EditText.
Dans le onCreate ()
EditText editText = (EditText) findViewById(R.id.textbox);
OnFocusChangeListener ofcListener = new MyFocusChangeListener();
editText.setOnFocusChangeListener(ofcListener);
Ajouter cette classe
private class MyFocusChangeListener implements OnFocusChangeListener {
public void onFocusChange(View v, boolean hasFocus){
if(v.getId() == R.id.textbox && !hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
Pour afficher le clavier, utilisez le code suivant.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
Pour masquer le clavier, utilisez le code ci-dessous . Et est la référence à EditText
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
Pour le faire en fonction de l'auditeur de focus, vous devriez choisir:
final InputMethodManager imm =(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
}else{
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
}
imm.toggleSoftInput(0, 0);
}
});
J'espère que cela t'aides.
Cordialement!