【问题标题】:Dynamically disable auto-capitalization of an EditText动态禁用 EditText 的自动大写
【发布时间】:2015-08-08 12:34:46
【问题描述】:

我正在动态创建一个EditText,并且我想禁用任何句子(新行)的自动大写。

我尝试了EditText.setInputType(int) 的各种标志,但没有一个可以禁用在新行上启用的 shift 键。


这是我的代码:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
EditText editText = new EditText(context);
int type = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE
            | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE;
if (preferences.getBoolean("disable_suggestions", true)) {
    type |= InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
                | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
}
if (preferences.getBoolean("disable_auto_capitalization", true)) {
    //
    // TODO: StackOverflow to the rescue! What flag do I need? 
    //
}
editText.setInputType(type);

我已经广泛搜索 StackOverflow 以寻找答案,我发现的唯一问题是 this

【问题讨论】:

  • 请理解setInputType() 是请求,而不是命令,因此并非所有输入法编辑器(也称为软键盘)都会满足您的请求。 AFAIK,你所拥有的应该没问题。
  • 感谢@CommonsWare 提供您的意见。你是说不可能禁用自动大写吗?
  • 不可能保证所有设备都禁用自动大写。同样,据我所知,您所拥有的应该没问题。如果您在某些设备上尝试它,并且该设备仍然自动大写,请在官方 Android SDK 模拟器上尝试您的应用程序。如果它在那里正常运行,您就知道您的设备或您安装在该设备上的输入法编辑器是问题的根源,您对此无能为力。如果,OTOH,Android SDK 模拟器自动大写,那么也许你的代码中还需要一些东西,虽然我不知道是什么。

标签: android android-edittext


【解决方案1】:

正如@CommonsWare 指出的那样,您所做的应该没问题。不可能保证在所有设备上禁用自动大写。

如果用户使用第三方键盘,如 SwiftKey,它可能会覆盖禁用自动大写;用户必须在第三方应用设置中手动执行此操作。

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    相关资源
    最近更新 更多