Je me bats avec le bouton Terminé du clavier logiciel. Je ne parviens pas à appuyer sur la touche Terminé du clavier logiciel pour cacher le clavier. D'un autre bouton, cela fonctionne parfaitement avec
imm.hideSoftInputFromWindow(editText.getApplicationWindowToken(), 0);
mais le onKeyListener ne fonctionne pas comme je le souhaite. Lorsque je frappe sur editText, le clavier virtuel apparaît et son contenu est effacé des caractères.
Merci pour l'écoute!
Le fichier main.xml:
<EditText
Android:id="@+id/answer"
Android:layout_gravity="center_horizontal" Android:textSize="36px"
Android:inputType="phone"
Android:minWidth="60dp" Android:maxWidth="60dp"
/>
Le fichier Java:
private EditText editText;
//...
editText = (EditText)findViewById(R.id.answer);
editText.setOnClickListener(onKeyboard);
editText.setOnKeyListener(onSoftKeyboardDonePress);
//...
// method not working:
private View.OnKeyListener onSoftKeyboardDonePress=new View.OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
{
// code to hide the soft keyboard
imm = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getApplicationWindowToken(), 0);
}
return false;
}
};
private View.OnClickListener onKeyboard=new View.OnClickListener()
{
public void onClick(View v)
{
editText.setText("");
}
};
La méthode de travail utilisant un bouton (dans le même fichier Java):
private View.OnClickListener onDone=new View.OnClickListener()
{
public void onClick(View v)
{
//....
// code to hide the soft keyboard
imm = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getApplicationWindowToken(), 0);
}
};
Edit: / Quand j'appuie sur la touche no "9", le clavier se cache. C'est étrange.
Utilisez Android: imeOptions = "actionDone", comme ça:
<EditText
...
Android:imeOptions="actionDone" />
InputMethodManager inputManager = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput(0, 0);
avec le contexte étant votre activité.
Le changement de l'instruction if en if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
l'a fait fonctionner avec l'attribut xml Android:inputType="phone"
.
Vous devriez jeter un oeil à setOnEditorActionListener () pour EditText:
Définissez un auditeur spécial à appeler lorsqu'une action est effectuée dans la vue texte . Cet appel sera appelé lorsque vous appuierez sur la touche Entrée ou lorsque Une action fournie à l'IME sera sélectionnée par l'utilisateur.
Utilisez le code ci-dessous avec Android:imeOptions="actionDone"
son travail pour moi.
<EditText
Android:id="@+id/et_switch_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:hint="Name"
Android:imeOptions="actionDone"
Android:inputType="textPersonName" />