Android виявляє натиснутою клавішу Готово для екранної клавіатури


111

Чи можливо виявити, коли Doneбула натиснута клавіша екранної клавіатури?

Відповіді:


276

Так, можливо:

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) {
            // do your stuff here
        }
        return false;
    }
});

Зауважте, що вам доведеться імпортувати такі бібліотеки:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;

Дякую, ви дали мені чудову відправну точку. Просто мені потрібно було скористатися EditorInfo.IME_ACTION_SEARCHдля пошуку кнопки об'єктива.
TechNyquist

Привіт, чи можливо це за допомогою ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia

1
@MaulikDodia Ви можете використовувати @OnEditorAction ()
butterknife

Дякую тобі. Я буду з цим @ Ridcully
Maulik Dodia

3

Інформація про редактор - це найкорисніший клас, коли вам доведеться мати справу з будь-яким типом вводу користувачів у програмі Android. Наприклад, для входу / реєстрації / пошукових операцій ми можемо використовувати його для більш точного введення клавіатури. Інформаційний клас редактора описує кілька атрибутів для об'єкта редагування тексту, що метод введення буде безпосередньо спілкуватися з текстовим вмістом редагування.

Ви можете спробувати IME_ACTION_DONE .

Ця дія виконує Doneоперацію, якщо нічого не вводиться, і IMEзаповіт буде закрито.

Використання setOnEditorActionListener

EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            /* Write your logic here that will be executed when user taps next button */
            handled = true;
        }
        return handled;
    }
});

Як впоратися з тією ж проблемою за допомогою спеціальної клавіатури?
Gaju Kollur

0

За допомогою Butterknife ви можете це зробити

@OnEditorAction(R.id.signInPasswordText)
boolean onEditorAction(TextView v, int actionId, KeyEvent event){
    if (actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        /* Write your logic here that will be executed when user taps next button */
    }
    return false;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.