无法使用inputType = typePassword限制EditText中的特殊字符

时间:2014-06-24 18:22:17

标签: android xml android-layout

我的Android应用程序中有一个登录表单,问题是我输入special characters时它绕过了我的所有检查。我的意思是说它通过无效密码登录并重定向到下一个活动。我使用了 EditText android:digits 属性。它在简单的 EditText 上工作正常但在我设置inputType属性时无效。

XML:

<EditText
    android:layout_weight="2"
    android:id="@+id/edt_signup_password"
    android:layout_width="match_parent"
    android:inputType="textPassword"
    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm" 
    android:background="@drawable/edittext"
    android:padding="4dp"
    android:maxLength="15"
    android:layout_height="wrap_content"
    android:ems="10" />

如何在android:inputType="textPassword"时限制特殊字符。在此先感谢

1 个答案:

答案 0 :(得分:0)

通过java执行此操作的一种方法是使用正则表达式。

您可以定义要允许的字符:

final static String INPUT = "[ a-zA-Z0-9_-]+";
final static Pattern PATTERN = Pattern.compile(INPUT);

INPUT模式允许使用空格,下划线,短划线,0-9以及大写和小写字母。

然后根据模式检查输入的文本,您将使用以下内容:

Matcher matcher = PATTERN.matcher(textView.getText().toString());
    if (matcher.matches()) {
        //login here
    }
    else {
        //do something else
    }