【问题标题】:EditText with single text line, line wrapping and Done action?EditText 具有单文本行、换行和完成操作?
【发布时间】:2011-12-02 02:59:43
【问题描述】:

在使用软键进行编辑时,我试图让EditText 具有以下特征。我准备好文档,在这里搜索,使用参数但找不到有效的配置。

  1. 屏幕上的EditView 视图有几行的高度(例如 3-4)。
  2. 内容文本为单行(即没有换行符)。
  3. 如果内容文本比视图的宽度长,它应该换行到下一行
  4. 软键的 Enter 键显示 Done 操作标签。

我可以达到 {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);

有可能吗?有什么建议吗?

【问题讨论】:

  • 谁能至少确认这不能完成?
  • [this question][1] 的答案中概述的换行。 [1]:stackoverflow.com/questions/3276380/…
  • 谢谢 A T。是的,这确实是包装,但我如何让它与上面所需的 #4 一起工作?
  • 你有没有想过这个问题?尝试做同样的事情。
  • 移除输入类型 MULTILINE。然后通过代码将属性 maxLines 设置为 3 或 4,具体取决于您的需要。

标签: android android-edittext


【解决方案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);

【讨论】:

  • 太棒了!给你虚拟拥抱:)
  • 动态改变高度使用 setMaxLines 代替
  • 感谢正确答案,因为其他人告诉 Edi​​tText 在设置其属性时隐藏了隐式合同,因此操作顺序很重要。要实现从单行 EditText 开始,然后自动换行到下一行,直到达到 maxLines 只需替换: editText.setLines(4) ;与:editText.setMaxLines(maxLines = 5);
  • @Joe 谢谢你的回答。请您这么好,并扩展您的答案并解释您到底是如何想出这种组合的。非常有用。
【解决方案2】:

只需添加

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

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

它配置 EditText 实例,以便用户编辑一个单行字符串,该字符串显示为带有 IME 选项的多行软换行。

【讨论】:

  • 为了清楚起见,您不能在布局 XML 中设置这些值——它们将被忽略。就像 OP 所说的那样以编程方式设置它们。
猜你喜欢
  • 2011-02-28
  • 2011-06-28
  • 1970-01-01
  • 2018-10-15
  • 2011-11-06
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
相关资源
最近更新 更多