Хоча більшість людей безпосередньо відповіли на питання, я хотів детальніше розглянути концепцію, що стоїть за ним. По-перше, мене звернули на увагу IME, коли я створив активність входу за замовчуванням. Він створив для мене якийсь код, який включав наступне:
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
Ви вже повинні бути ознайомлені з атрибутом inputType. Це просто інформує Android про тип очікуваного тексту, наприклад електронну адресу, пароль або номер телефону. Повний список можливих значень можна знайти тут .
Однак imeOptions="actionUnspecified"
я був атрибутом, що я не розумів його призначення. Android дозволяє взаємодіяти з клавіатурою, яка спливає внизу екрану, коли текст вибирається за допомогою InputMethodManager
. У нижньому куті клавіатури є кнопка, зазвичай на ній написано "Далі" або "Готово", залежно від поточного текстового поля. Android дозволяє налаштувати це за допомогою android:imeOptions
. Можна вказати кнопку "Надіслати" або кнопку "Далі". Повний список можна знайти тут .
Після цього ви можете прослуховувати натискання на кнопці дії, визначивши елемент TextView.OnEditorActionListener
для EditText
елемента. Як у вашому прикладі:
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
return true;
}
return false;
}
});
Тепер у своєму прикладі я мав android:imeOptions="actionUnspecified"
атрибут. Це корисно, коли ви хочете спробувати увійти до користувача, коли він натискає клавішу введення. У своїй діяльності ви можете виявити цей тег і спробувати ввійти:
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});