我有一个EditText,我想将文本设置为大写。我使用了setFilters(new InputFilter [] {new InputFilter.AllCaps()}),它大部分时间都在工作,但在自动更正和自动完成的三星上没有。
在每次我输入一个字母的那种设备上,它都会替换前一个字母,留下一个长度为1个字符的文本。能够键入多个字符的唯一方法是锁定键盘上的大写字母。
我想在每台设备上都有解决方案,有谁知道如何实现这一目标?
答案 0 :(得分:0)
这是三星的键盘错误,你无法用它做任何事情。 (android.os.Build.MANUFACTURER
检查除外)
查看InputFilter#filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
方法
当缓冲区要替换范围时调用此方法 dstart ... dend of dest with the new text from the range start ... end of 源。
输出:
普通设备:
“s”0 1“”0 0 - > “S”
“e”0 1“S”1 1 - > “E”
三星:
“s”0 1“”0 0 - > “S”
“e”0 1“S”0 1 - > “E”
如果要将一个字符替换为另一个字符,三星的结果与此类结果没有区别,例如使用剪贴板的“插入”选项。