背景
搜狗输入法某版本发布前,小h发现了这样一个bug:在编辑框中输入带有emoji的颜文字时,输入法发生崩溃(前提:该编辑框屏蔽emoji且编辑框内容最多为5个字符)。具体原因如下图所示:
当小h在讲这个bug时,小编对输入框产生了兴趣:为什么输入内容后就自动过滤了emoji?输入框如何控制输入内容的类型?EditText还有哪些重要属性和方法?结合疑问,整理了EditText相关属性和测试注意事项。
EditText的主要属性
1)监听输入框的输入状态
-
有的在输入内容时提示还可以输入多少字;
-
有的输入内容后就显示搜索结果;
-
有的输入内容超过长度限制时弹出提示信息;
-
有的输入不合法内容不在输入框中显示
上面这些都可以通过监听输入框的输入状态来实现,具体实现方式如下:
2)限制输入框的内容
3) 设置输入法中Enter键的显示内容
针对不同属性的输入框,输入法中的Enter键显示的内容不同。如在输入qq或微信账号的输入框中,Enter键显示的是“下一步”;在qq或微信聊天输入框中,Enter键显示的是“回车图标”;在搜索输入框中,Enter键显示的是“开始”或“搜索”。使用android:imeOptinos可对输入法进行一些界面上的设置:
也可以使用EditText的setImeOptions方法实现该功能:
-
actionGo去往,对应常量EditorInfo.IME_ACTION_GO;
-
actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH;
-
actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND;
-
actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT;
-
actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE
EditText测试注意事项
-
输入不同的内容,如中文、英文、符号、数字、emoji、带emoji的颜文字、混输、空格、回车、花漾字、其他语言等,尤其是输入信息需要存储到数据库的,注意’、”、[]、()、{}、;、<>等特殊字符;
-
EditText与Enter键的对应关系及其他按键对输入框的影响;
-
输入框本身的大小和长度;
-
对空格和tab字符的处理机制;
-
字符本身显示的颜色;
-
是否允许复制粘贴;
-
输入类型,如是否允许输入数字或中文,不允许输入其他字符等;
-
输入状态,当处于某种状态下,输入框是否处于可写或者非可写状态;
-
密码框中的显示内容转换成其他符号;
-
对于有限制的输入框应该给出提示;
-
输入不同长度的内容,如超长内容,尤其有长度限制的输入框,对超出限制的字符的处理。
根据需求取舍,如对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,选了某些条件之后,一些输入框会关闭或转为只读状态,若有遗漏欢迎补充。