EditText包含单行文本,换行和完成操作?

use*_*637 23 android android-edittext

我正在尝试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);
Run Code Online (Sandbox Code Playgroud)

可能吗?有什么建议吗?

Joe*_*Joe 35

这种组合(以及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);
Run Code Online (Sandbox Code Playgroud)

  • 要动态更改高度,请改用 setMaxLines (2认同)

Gir*_*hai 7

只需添加

editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

以编程方式在您的活动中使用您的edittext实例.

它配置EditText实例,以便用户编辑单行字符串,该字符串使用IME选项在多行上进行软包装.

  • 需要明确的是,您不能在布局 XML 中设置这些值——它们将被忽略。就像OP所说的那样以编程方式设置它们。 (2认同)