【问题标题】:How to make an EditText not allow any numbers to be entered? [duplicate]如何使 EditText 不允许输入任何数字? [复制]
【发布时间】:2020-05-15 16:00:06
【问题描述】:

我试图阻止用户在 EditText 中输入数字。其他一切都是允许的;只是不是数字。有没有办法做到这一点?

【问题讨论】:

  • 使用TextWatcher

标签: java android android-edittext


【解决方案1】:

很简单,使用:

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

例子

<EditText android:id="@+id/edt" android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" android:layout_width="fill_parent" 
android:layout_height="wrap_content" /> 

【讨论】:

  • 这只接受字母。我需要接受除了数字之外的一切。这对于我拥有的多语言应用程序也不利。
  • Ok:..... android:digits="aãâáàbcçdeéfghiíjklmnoõôóòpqrstuvwxyzAÃÂÁÀBCÇDEÉFGHIÍJKLMNOÕÔÓÒPQRSTUVWXYZ@-_'+=(){}[]*%$#!?,.;\n: /?\\"
【解决方案2】:

这种方法不包括blockNumbers vairble 中定义的数字。

private EditText etSample ;
private String blockNumbers = "1234567890";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    etSample = (EditText) findViewById(R.id.etSample);
    etSample.setFilters(new InputFilter[] { filter });

}

private InputFilter filter = new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (source != null && blockNumbers.contains(("" + source))) {
            return "";
        }
        return null;
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多