ImeOptions не работает с AppCompatEditText
У меня есть фрагмент, который содержит EditText, и я пытаюсь настроить событие клавиатуры, но это не похоже на работу. actionId
всегда 0
,
<android.support.v7.widget.AppCompatEditText
android:id="@+id/input_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_name"
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionNext"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
name.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_NEXT) {
save();
handled = true;
}
return handled;
}
});
Я также попытался установить метку кнопки, используя следующий код, но он не работает
name.setImeActionLabel("Next", KeyEvent.KEYCODE_ENTER);
2 ответа
Определение android:digits
для алфавитов принимает только алфавиты и любые другие нажатия кнопок на клавиатуре игнорируются. Таким образом удалить атрибут digits
в EditText
и добавить проверку данных, введенных в Java-файл.
Я думаю, что вы не поняли с android:digits
Проверьте Android: цифры
Если установлено, указывает, что этот TextView имеет метод числового ввода и что эти конкретные символы являются теми, которые он будет принимать. Если это установлено, числовой подразумевается, чтобы быть истиной. По умолчанию установлено значение false.
android:digit
указывает, что это editText
будет принимать только цифры. В вашем случае вы определяете это с abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
которые не имеют цифры, что приводит к нет onEditorAction()
Tirgger.
Кроме того, actionId будет 0, если вы установите setImeActionLabel()
,
Ps,
Если вы хотите отфильтровать ввод editText
, вы должны пойти на InputFilter
вместо.