EditText с одной текстовой строкой, переносом строки и выполненным действием? - PullRequest
23 голосов
/ 02 декабря 2011

Я пытаюсь получить EditText со следующими характеристиками при редактировании с помощью программной клавиши. Я подготовил документацию, искал здесь, поиграл с параметрами, но не смог найти рабочую конфигурацию.

  1. Вид EditView на экране имеет высоту в несколько строк (например, 3-4).
  2. Текст содержимого представляет собой одну строку (то есть без разрывов строк).
  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);

Возможно ли это? Любое предложение?

Ответы [ 2 ]

35 голосов
/ 23 июня 2012

Эта комбинация (и конкретный порядок вызовов метода 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);
7 голосов
/ 21 ноября 2014

Просто добавьте

editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);

с вашим экземпляром edittext в вашу деятельность программным способом.

Он настраивает экземпляр EditText так, чтобы пользователь редактировал однострочную строку, которая отображается с помощью soft-перенос на несколько строк с параметрами IME.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...