Je travaille avec l'API Amazon S3.
Problème: travailler avec TextWatcher. Dès que l'utilisateur entre plus de 3 caractères dans l'edittext, l'api est appelée et affiche les résultats correspondants. Le problème commence dès que l'utilisateur a appuyé sur le bouton Terminé / Entrée du clavier logiciel, l'API est appelée à nouveau et la recherche est à nouveau. Puis-je arrêter ce deuxième appel d'une manière ou d'une autre? Merci!
5 Réponses :
Peut-être pouvez-vous essayer de remplacer la méthode onKeyListener dans votre contrôle, pour le laisser détecter si la touche enfoncée est «entrée» et ajouter le code que vous voulez que votre touche «entrée» fasse?
edittext.setOnKeyListener (nouveau View.OnKeyListener () {
vous pouvez le changer depuis xml:
editText.setImeOptions(EditorInfo.IME_ACTION_NONE);
ou depuis le code:
<EditText ... android:imeOptions="actionNone"/>
Il supprimera le bouton Terminé chaque fois que l'utilisateur déclenchera le softkeybord
il suffit de gérer le clic terminé et de masquer le clavier virtuel
editText = (EditText) findViewById(R.id.edit_text); editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { // hide your keyboard here try { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); if (inputMethodManager != null && activity.getCurrentFocus() != null) { inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); } } catch (Exception e) { e.printStackTrace(); } return true; } return false; } });
Ajoutez
android:maxLines="1"
à votre xml et le bouton Entrée doit être désactivé.
Vous pouvez faire comme editText.setImeOptions(EditorInfo.IME_ACTION_NONE);
mais cela ne masquera pas la touche Entrée / Suivant
Avez-vous besoin du bouton Entrée ou est-il possible de le supprimer?
je vous suggère de faire un hack sur l'option ime par programme