5

我想将我的 EditText 限制为仅特定字符,例如(az、AZ、0-9、空格等)。

如果用户尝试输入列表之外的其他字符,则不应在edittext中显示。

有没有办法做到这一点?

4

3 回答 3

5

尝试这个:

InputFilter filter = new InputFilter() { 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
          for (int i = start; i < end; i++) { 
              if (!Character.isLetterOrDigit(source.charAt(i))) { 
                  return ""; 
                  } 
           } 
           return null; 
     } 
}; 

edit.setFilters(new InputFilter[]{filter}); 

检查如何在 Android 中的 EditText 上键入时过滤 ListView 数据

于 2013-06-14T10:25:14.260 回答
4

这里是给你的解决方案......

只需将字符添加到您想要的字符串中allowed

    final String allowed = "abcdefghijklmnopqrstuvwxyz";
    final EditText editText = (EditText)findViewById(R.id.edit001);
    editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            char currentChar = s.charAt(start);
            System.out.println(currentChar);
            if(allowed.contains(Character.toString(currentChar)))
            {
                //Nothing to do
            }
            else
            {
                editText.setText(editText.getText().toString().substring(0, editText.getText().toString().length()-1));
                int position = editText.length();
                Editable etext = editText.getText();
                Selection.setSelection(etext, position);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub

        }
    });
于 2013-06-14T10:57:24.007 回答
0

你可以用这个

yourEditText.addTextChangedListener()

然后,您查看用户输入是否符合您的限制,并选择要显示的字符。

于 2013-06-14T10:27:56.703 回答