【问题标题】:How to restrict EditText to only specified characters in android? [closed]如何将 EditText 限制为仅在 android 中指定的字符? [关闭]
【发布时间】:2013-06-14 10:20:49
【问题描述】:

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

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

有没有办法做到这一点?

【问题讨论】:

  • 为什么还要关闭?他在问如何做一些完全不模棱两可的事情。我在这里能看到的唯一含糊之处是,实现他想要的东西的方法不止一种,但这里 90% 的问题都是这种情况(90% 是编造的)。
  • 当然,这是一个真实的问题,定义明确且易于理解。 @Andrew Barber 错误地将其标记为已关闭。这个问题的答案也是最有价值的。我已经给出了这个问题和上面 +1 的评论。
  • @MarioS 我已将关闭原因更改为更准确的原因。

标签: android


【解决方案1】:

试试这个:

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}); 

查看How can I filter ListView data when typing on EditText in android

【讨论】:

  • 你能解释一下如何使用它吗?
  • 输入过滤器我认为在这种情况下比 textwatcher 更好 +1
【解决方案2】:

这里有适合你的解决方案....

只需将字符添加到您想要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

        }
    });

【讨论】:

    【解决方案3】:

    你可以用这个

    yourEditText.addTextChangedListener()

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

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 2011-07-09
      • 2011-03-24
      • 2011-03-21
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多