У меня есть ряд записей EditText, и я хотел бы, чтобы, когда пользователь нажимал клавишу ввода, он переходил к следующему EditText. Я знаю, как это сделать по одному, но есть ли способ указать всем элементам управления edittext использовать одну и ту же функцию, которая проверяет ввод ключа и перемещает курсор. Кажется сумасшедшим иметь одну функцию для каждого из EditTexts.
Возврат клавиши Android edittext переходит к следующему тексту
Ответы (6)
Гораздо проще, чем прослушивание ключей: попробуйте установить android:singleLine="true"
и android:imeOptions="actionNext"
(по крайней мере, для текстовых представлений с однострочным вводом). Дополнительные сведения см. в документации по Android для TextView.
Обновление: singleLine
теперь устарело, но вы можете оставить это из. Это поведение по умолчанию для редактируемого текста, если вы явно не установили android:inputType="textMultiLine"
, а inputType
в любом случае переопределяет предлагаемую замену singleLine
на maxLines="1"
для редактируемого текста.
Для альтернативы или более нового подхода к ответу, данному Йони...
Поскольку singleLine
считается устаревшим, мы можем вручную установить значение android:maxLines="1"
с помощью android:inputType="text"
.
Небольшое пояснение:
- Мы используем
android:inputType="text"
для обработки ввода как простого текста. - И мы используем
android:maxLines="1"
, чтобы установить максимальное количество строк текста в 1 (как это предполагает).
Использование только maxLines="1"
не вызовет никакого эффекта, но может работать только inputType="text"
, как упоминает Адам (хотя я этого не проверял).
Добавление
android:inputType="text"
в XML достаточно. Когда вы не определяете тип ввода, он переходит на следующую строку.
Вы можете попробовать добавить один прослушиватель событий ко всем вашим объектам editText:
OnKeyListener myKeyListener = new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO: do what you got to do
return false;
}
};
editText1.setOnKeyListener(myKeyListener);
editText2.setOnKeyListener(myKeyListener);
editText3.setOnKeyListener(myKeyListener);
Примените этот пользовательский стиль в файле styles.xml.
<style name="SingleLineText">
<item name="android:inputType">text</item>
<item name="android:maxLines">1</item>
</style>
а затем установите его в EditText следующим образом
style="@style/SingleLineText"
Добавьте следующие строки в EditText
android:singleLine="true"
android:maxLines="1"