代码之家  ›  专栏  ›  技术社区  ›  UMAR-MOBITSOLUTIONS

如何以编程方式限制android中的大写字母输入?

  •  2
  • UMAR-MOBITSOLUTIONS  · 技术社区  · 16 年前

    我想限制在我的表单上通过键盘输入大写字母。

    有人指导我如何做到这一点吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Maragues    16 年前

    首先,你的目标是什么?为什么要限制大写字母?你不能在用户输入和使用的验证上处理它们吗? TooWrCase[()

    如果你真的需要限制大写字母,我唯一能想到的就是压倒一切 onTextChanged(CharSequence text, int start, int before, int after) 试着做任何你想做的事。我还没有测试过,但可能会有用。

    更新:Radek提到 InputFilter . 那个解决方案似乎比我的干净,但我从来没有用过。

    可以将inputfilters附加到可编辑文件以约束可以对其进行的更改。

        2
  •  4
  •   plugmind    16 年前

    在源代码中:

    InputFilter smallFilter = 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 (Character.isUpperCase(source.charAt(i))) {
            char[] v = new char[end - start];
            TextUtils.getChars(source, start, end, v, 0);
            String s = new String(v).toLowerCase();
    
            if (source instanceof Spanned) {
              SpannableString sp = new SpannableString(s);
              TextUtils
                  .copySpansFrom((Spanned) source, start, end, null, sp, 0);
              return sp;
            } else {
              return s;
            }
          }
        }
        return null;
      }
    };
    
    EditText vText = ...;
    vText.setFilters(new InputFilter[]{smallFilter});
    

    它基于android源:inputfilter.allcaps。测试和工作。