最近有用户反映在手机上输入密码时最大长度和提示的不符,最长14位,但是却只能输入11位。这个功能是很早以前就测试过的,而且很多机器都测试过没有问题,从后台查看到用户的手机型号Samsung Galaxy A6s。打开云测平台找到同一型号的测试机,果然有问题。
接下来查找解决方案。
当时因为输入框的样式问题,密码框继承了手机号的样式,默认maxLength是11,在代码中重新设置了maxLength和自定义的Filter(用于控制密码输入内容),代码如下
passwordEdit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(13), new PasswordFilter()}); // PasswordFilter为自定义Filter
这样的代码在其他三星手机上没有问题,只在A6s上无法生效,不知道又修改了哪些代码(头疼)。
尝试了一些方案
- 先设置空的Filter,然后再设置不为空的Filter;无效
- 改变inputType;无效
- xml代码不设置maxLength;有效。
看来A6s的Rom是修改了一些关于maxLength的设置,在xml中设置maxLength后就无法重新设置最大长度了。
暂时先修改xml代码不设置长度,修改style代码,增加一个没有maxLength的样式,让密码样式来继承。
三星程序员胡乱修改Rom导致的这个奇葩问题,也不知道会不会修复。