EditText中android:digits失效问题

来源:互联网 发布:ssm项目源码和视频讲解 编辑:程序博客网 时间:2024/06/16 01:49

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


原先代码如下:

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的设置。具体求大神解析。

2 0
原创粉丝点击