EditText中android:digits失效问题

需求:密码输入要求指定字符串,画面中可以切换密码显示与隐藏


原先代码如下:

xml:

<EditText 
                    android:id="@+id/set_password_txt"
                    android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:paddingLeft="10dp"
           android:hint="@string/sign_in_regist_set_pw"
           android:textColor="@color/white"
           android:textColorHint="@color/gray_white"
           android:textCursorDrawable="@null"
           android:inputType="textPassword"
           android:digits="@string/register_pw_digits"
           android:background="@null"/>

register_pw_digits在string中定义:~!@#$%^&amp;*():";',./\|[]{}?-=+_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ


JAVA中显示密码:

mPW.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

隐藏密码:

mPW.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

问题出现:当输入表情时居然可以输入!!!!android:digits失效!!


解决:

JAVA中不能使用setInputType改变密码显示及隐藏

而使用以下方法:

显示密码:

mPW.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

隐藏密码:

mPW.setTransformationMethod(PasswordTransformationMethod.getInstance());


原因:估计是setInputType在底层实现时会覆盖android:digits的设置。具体求大神解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值