在 EditText 中禁用 @char

Disable @ char in EditText

我的应用程序中有以下注册布局:

我发现出于某种原因,用户有时会在“姓名”字段中插入他们的电子邮件,然后在应用程序中显示的不是他们的姓名,而是电子邮件。

我想避免这种情况并禁用此 EditText 中的 @ 字符,或者更一般地说,我不希望他们在那里写电子邮件。

我该怎么做?

我不介意他们插入任何其他内容,包括 chars/numbers/symbols/any 语言。

谢谢

在我看来,最好在用户单击“登录”按钮时进行字段验证,而不是在写入数据时“阻止”用户。

这样做,您可以显示一条错误消息来警告用户。

如果你想过滤掉一些输入;您可以通过将 InputFilter 附加到您的 EditText 来实现。

EditText editText = findViewById(R.id.edittext);
InputFilter inputFilter = new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        for(int i = start; i < end; i++){
            if(source.charAt(i) == '@'){
                Toast.makeText(MainActivity.this, "\"@\" is not allowed.", Toast.LENGTH_SHORT).show();
                //We are returning empty to ignore "@" character.
                return "";
            }
        }
        //Otherwise we can return null to leave everything as it is.
        return null;
    }
};
editText.setFilters(new InputFilter[]{inputFilter});