前言
现在好多人聊天喜欢输入表情, 所以在开发中测试人员也习惯去测试编辑框输入表情,经常出现数据提交失败。然而好多的编辑并不需要表情的或表情符时,这时我们就需要去禁止用户输入表情。
问题
当我们使用setFilters方法过滤表情输入之后,而且通过maxLength增加文本输入字数限制时,两个就不能同时生效了。
原因
因为默认EditTextView是有一个关于maxLength的过滤器的,我们通过setFilters的参数是一个新数组,就覆盖了原来的长度过滤器,所以maxLength就不能生效了,源码:
解决办法
解决办法很简单,就是在设置过滤器时把原来的过滤器拼接到新的数组中去,然后setFilters就ok了:
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength), emojiFilter});
很多人马上就发现这个有个缺点,就是xml里面配置的maxLength就没什么用了,每次都需要在代码中去动态配置这个长度限制。其实解决这个问题也很简单:
方法1:通过反射获取maxLength属性的值,这里我就不讲了。
方法2:我们重点讲怎么通过obtainStyledAttributes获取到xml中到maxLength属性值,大家经常自定义属性
禁止表情输入和长度限制
最新推荐文章于 2024-05-08 12:14:16 发布