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

标签 android android-activity

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

有人指导我如何实现这一目标吗?

最佳答案

在源代码中:

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。经过测试并有效。

关于android - 如何以编程方式限制android中的大写字母输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546916/

相关文章:

android - fragment - 您是否必须在包含整个 Activity 的 fragment 周围使用 Activity Wrapper?

android - 暂停和恢复 ActivityGroup 中的子 Activity

android - 轻松过渡到 Android 计费 API v 3

java - 十六进制到有符号 32 位转换

android - 相当于Android中MvvmCross框架的UserControl

java - 无法在操作栏中显示图标

android - 来自 Android 开发人员的 Timepicker 不允许静态

android - 在 AOSP Android 6.0 上更新 WebView

php - 有没有办法在从 php 服务器发送的 Firebase 通知中实现 "expiration"时间?

android - 如何在列表 Activity 中设置工具栏?