Вот более правильный ответ, который не отображает клавишу ввода на клавиатуре IME:
// IMPORTANT, do this before any of the code following it
myEditText.setSingleLine(true);
// IMPORTANT, to allow wrapping
myEditText.setHorizontallyScrolling(false);
// IMPORTANT, or else your edit text would wrap but not expand to multiple lines
myEditText.setMaxLines(6);
Кроме того, вы можете заменить setSingleLine(true)
на явный android:inputType
в файле макета XMLили setInputType(InputType.*)
в коде - в котором используемый тип ввода - это все, что, как вы знаете, ограничивает ввод только однострочными (т. е. все, что уже вызывает неявно setSingleLine(true)
).
Объяснение:
То, что делает setSingleLine(true)
, вызывает неявно setHorizontallyScrolling(true)
и setLines(1)
, наряду с изменением некоторых настроек клавиатуры IME для отключения клавиши ввода.
Вв свою очередь, вызов setLines(1)
подобен вызову setMinLines(1)
и setMaxLines(1)
за один вызов.
Некоторые типы ввода (т. е. константы из InputType.TYPE_*
) вызывают setSingleLine(true)
неявно или, по крайней мере,достигает того же эффекта.
Вывод:
Таким образом, чтобы достичь того, что хочет OP, мы просто противостоим этим неявным настройкам, возвращая эти неявные вызовы.