【问题标题】:Android EditText MultiLine with Sentence Caps带有句子大写的 Android EditText MultiLine
【发布时间】:2020-03-14 00:34:35
【问题描述】:

我正在尝试实例化具有多行功能以及第一个字符大写标志的 EditText,如下所示:

myEditText?.setSingleLine(false)
myEditText?.inputType =
  InputType.TYPE_CLASS_TEXT or
  InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
  InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE
  myEditText?.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION)

我也尝试过将标志与 plus 而不是 or 组合:

myEditText?.setSingleLine(false)
myEditText?.inputType =
  InputType.TYPE_CLASS_TEXT +
  InputType.TYPE_TEXT_FLAG_CAP_SENTENCES +
  InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE
  myEditText?.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION)

但是,由于某种原因,我只能获得多行或首字母大写,但不能同时获得两者。结果要么是没有返回键的键盘,要么是只在同一行添加空格的返回键

我是错过了一面旗帜,还是使用了旧的?


编辑: 我忘了说我的 UI 是完全由没有 XML 布局文件的代码构建的。

【问题讨论】:

  • 有什么理由不使用 xml 作为 ui 吗?
  • @PrajwalW 不。但这就是项目结构。
  • @PrajwalW 你为什么一直删除你的帖子?和他们一起还有其他人的cmets?格式不好。

标签: android kotlin android-edittext ime


【解决方案1】:

最近发现当我们设置inputType时,会覆盖singleLine的设置。

  1. 设置输入类型。

  2. 设置单行=false。

--

editText.inputType = InputType.TYPE_TEXT_FLAG_MULTI_LINE or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
editText.setSingleLine(false)

我没有设置 imeOptions。这似乎运作良好。

这似乎适用于模拟器和 Google Pixel 3xl。

【讨论】:

  • 谢谢。最后是一个有效的组合。不知何故,我认为执行顺序会有所不同。在inputype 之后推送setSingleLine() 就成功了。
  • 谢谢!我在仅通过代码获取 CAP_SENTENCE 和多行时遇到了问题,这很有效!
猜你喜欢
  • 1970-01-01
  • 2014-09-16
  • 2017-09-09
  • 1970-01-01
  • 2012-08-08
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多