如何通过APK编辑器修改安卓键盘实现始终首字母大写输入?
解决安卓应用输入框始终单词首字母大写的问题
- 先确认你已完全替换所有
android:inputType="textCapSentences"为android:inputType="textCapWords",若仍无效,尝试以下方法:
补充inputType参数
部分输入框需要组合参数才能生效,将目标输入框的inputType改为:android:inputType="textCapWords|textNoSuggestions"单行输入可直接用
android:inputType="textCapWords",确保没有残留textCapSentences属性。修正动态设置的输入类型
很多应用会通过代码动态修改输入类型,仅改布局xml无效:- 若能查看Java代码片段,找到输入框的
setInputType调用,替换参数为:editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); - 若编辑smali文件,对应常量值为
0x11(TYPE_CLASS_TEXT+TYPE_TEXT_FLAG_CAP_WORDS),把setInputType的参数改为该值。
- 若能查看Java代码片段,找到输入框的
添加输入过滤器强制单词大写
若上述方法失效,给输入框注入过滤器逻辑,强制每个单词首字母大写:editText.setFilters(new InputFilter[]{new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (source.length() == 0) return null; String sourceStr = source.toString(); StringBuilder result = new StringBuilder(); boolean capitalizeNext = true; for (char c : sourceStr.toCharArray()) { if (Character.isWhitespace(c)) { capitalizeNext = true; result.append(c); } else if (capitalizeNext) { result.append(Character.toUpperCase(c)); capitalizeNext = false; } else { result.append(Character.toLowerCase(c)); } } return result; } }});用APK编辑器的代码编辑功能,将这段代码添加到输入框初始化的位置。
兼容第三方键盘
部分第三方键盘会忽略inputType设置,可额外添加属性:android:capitalize="words"该属性在高版本Android中虽被标记为过时,但部分键盘仍会识别。
内容的提问来源于stack exchange,提问作者Android User
相关产品推荐
相关产品推荐

