Bonjour
J'ai cherché EditText
et de recherche, Button
. Quand je tape le texte recherché, je voudrais utiliser ENTREZ la clé sur softkeyboard à la place de la recherche Button
pour activer la fonction de recherche.
Merci pour l'aide à l'avance.
Bonjour
J'ai cherché EditText
et de recherche, Button
. Quand je tape le texte recherché, je voudrais utiliser ENTREZ la clé sur softkeyboard à la place de la recherche Button
pour activer la fonction de recherche.
Merci pour l'aide à l'avance.
Vous le faites par la fixation d'un OnKeyListener
sur votre EditText
.
Voici un exemple de partir de mon propre code. J'ai un EditText
nommée addCourseText
, qui va appeler la fonction addCourseFromTextBox
lorsque la touche entrée ou le d-pad est cliqué.
addCourseText = (EditText) findViewById(R.id.clEtAddCourse);
addCourseText.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
addCourseFromTextBox();
return true;
default:
break;
}
}
return false;
}
});
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/search_hint"
android:inputType="text"
android:imeOptions="actionSend" />
Vous pouvez ensuite écouter appuie sur le bouton d'action par la définition d'un TextView.OnEditorActionListener pour l'EditText élément. À votre écoute, répondre à la appropriée de l'IME l'ID d'action définis dans le EditorInfo classe, comme IME_ACTION_SEND. Par exemple:
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
Source: https://developer.android.com/intl/ru/training/keyboard-input/style.html
Pour éviter l'accent avancer à la prochaine champ modifiable (si vous en avez un), vous pourriez ignorer la clé-les événements, mais la poignée de la clé des événements. Je préfère aussi de filtrer d'abord sur le mot de code, en supposant que ce serait un peu plus efficace. Par ailleurs, rappelez-vous que le retour à true signifie que vous avez traité l'événement, donc pas d'autre auditeur. De toute façon, voici ma version.
ETFind.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER
|| keyCode == KeyEvent.KEYCODE_ENTER) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
// do nothing yet
} else if (event.getAction() == KeyEvent.ACTION_UP) {
findForward();
} // is there any other option here?...
// Regardless of what we did above,
// we do not want to propagate the Enter key up
// since it was our task to handle it.
return true;
} else {
// it is not an Enter key - let others handle the event
return false;
}
}
});
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.