У меня есть серия записей EditText и хотелось бы, чтобы, когда пользователь нажимает клавишу ввода, он перейдет к следующему Editext. Я знаю, как это сделать за один раз, но есть способ сообщить всем элементам управления edittext использовать ту же функцию, которая проверяет ввод ключа и продвигает курсор. Кажется сумасшедшим иметь одну функцию для каждого из EditTexts
Возврат ключа edittext Android переходит к следующему тексту
Ответ 1
Намного проще, чем обнюхивать ключи: попробуйте установить android:singleLine="true"
и android:imeOptions="actionNext"
(по крайней мере, для однострочных текстовых просмотров). Подробнее читайте в документации для TextView.
Обновление: singleLine
устарело, но вы можете его оставить. Это поведение по умолчанию для редактируемого текста, если вы явно не устанавливаете android:inputType="textMultiLine"
, а inputType
в любом случае переопределяет предлагаемую замену singleLine
maxLines="1"
для редактируемого текста.
Ответ 2
Для альтернативного или более нового подхода для ответа, полученного от Йони...
Так как singleLine
считается устаревшим, мы можем установить вручную android:maxLines="1"
с помощью android:inputType="text"
.
Небольшое объяснение:
- Мы используем
android:inputType="text"
специально для обработки ввода как обычного текста. - И мы используем
android:maxLines="1"
, чтобы установить максимальные строки текста в 1 (как он подсказывает).
Использование только maxLines="1"
не вызовет какого-либо эффекта, но только inputType="text"
может работать также, как упоминает Адам (хотя я этого не проверял).
Ответ 3
Вы можете попробовать добавить один прослушиватель событий ко всем объектам 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);
Ответ 4
Добавление
android:inputType="text"
в XML достаточно. Когда вы не определяете тип ввода, он переходит к следующей строке.
Ответ 5
Применить этот пользовательский стиль в styles.xml
<style name="SingleLineText">
<item name="android:inputType">text</item>
<item name="android:maxLines">1</item>
</style>
а затем установите его в EditText, как этот
style="@style/SingleLineText"