EditText с отдельной текстовой строкой, переносом строк и выполнением Done?
Я пытаюсь иметь EditText
со следующими характеристиками при редактировании с помощью мягкой клавиши. Я подготовил документацию, выполнил поиск здесь, поиграл с параметрами, но не смог найти рабочую конфигурацию.
- Вид
EditView
на экране имеет высоту для нескольких строк (например, 3-4).
- Текст контента представляет собой одну строку (то есть, строки не разрываются).
- Если текст содержимого длиннее ширины представления, он должен быть перенесен в следующую строку
- Клавиша "Enter" на программной кнопке отображает метку "Готово".
Я мог бы достичь {1,2,3} и {1,2,4}, но не {1,2,3,4}. Мое рациональное заключается в том, что, поскольку содержимое является отдельной строкой (без разрывов строк), клавиша Enter не используется и, следовательно, должна быть изменена на метку Done.
Мой код установки выглядит следующим образом
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);
editText.setHorizontallyScrolling(false);
editText.setSingleLine(false);
// This does not work. Soft keyboard has Enter action.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Возможно ли это? Любое предложение?
Ответы
Ответ 1
Эта комбинация (и конкретный порядок вызовов метода EditText
) должна произвести требуемую конфигурацию:
editText.setInputType(
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
editText.setSingleLine(true);
editText.setLines(4); // desired number of lines
editText.setHorizontallyScrolling(false);
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Ответ 2
Просто добавьте
editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);
с вашим экземпляром edittext в вашей деятельности программно.
Он настраивает экземпляр EditText, чтобы пользователь редактировал строку с одной строкой, которая отображается с мягкой упаковкой на нескольких строках с параметрами IME.