【问题标题】:Disable small character EditText InputType禁用小字符 EditText InputType
【发布时间】:2017-09-28 13:09:05
【问题描述】:

有没有办法实现如下图? 我有一个 EditText,我希望 InputType 始终是 Caps。 我试过用这个

android:inputType="textCapCharacters"

它工作正常,但是当我按下软键盘上的顶部箭头图标(如下图所示)并开始输入文本时,文本将以小字符显示。有没有办法禁用顶部箭头键?

谢谢

【问题讨论】:

    标签: android xml android-edittext


    【解决方案1】:

    你可以通过如下代码来实现:

    将大写字母作为唯一过滤器应用于 EditText

    这里我们将UpperCase 过滤器设置为EditText 的唯一过滤器。请注意,这样做会删除之前添加的所有过滤器(maxLength、maxLines 等)。

    editText.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
    

    将大写字母添加到 EditText 的现有过滤器中

    要保留已应用的 EditText 过滤器(比如 maxLines、maxLength 等),您需要检索应用的过滤器,将大写过滤器添加到这些过滤器,然后将它们设置回 EditText。下面是一个例子:

    InputFilter[] editFilters = editText.getFilters();
    InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
    System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
    newFilters[editFilters.length] = new InputFilter.AllCaps();  
    editText.setFilters(newFilters);
    

    【讨论】:

    • 很高兴为您提供帮助。如果它解决了您的问题,请将答案标记为正确
    • @Ricardo 它没有反映定义 XML 的其他属性
    • 检查已编辑的帖子。它的完整代码。你只需要复制粘贴
    【解决方案2】:

    它对我有用, 试试这个

    edittext.setInputType(InputType.TYPE_CLASS_TEXT);
    edittext.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
    

    【讨论】:

    • 设置 InputType 后跟 setFilters 是没有意义的,除非您检索以前的过滤器。这样第一行代码就可以正常工作,因为它不存在
    【解决方案3】:

    您可以控制直接响应用户操作的键盘输入。 检查这个link

    【讨论】:

      【解决方案4】:

      是的你可以这样做

      您可以检查用户输入的每个字母是否将其小写字母转换为大写字母

      例如:-

      如果用户输入 e 将其替换为 E

      【讨论】:

      • 文字很大怎么替换?
      • 你可以通过使用 toUpperCase() 方法来实现
      • 我在打字时想要大写
      • 你可以使用 addTextChangedListener() 并将文本转换为大写
      【解决方案5】:

      是的,您可以通过编程方式进行设置。 Android为此内置了IntentFilter

      您可以使用以下代码来实现这一点:

      editText.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
      

      但是,setFilters 会重置通过 XML 设置的所有其他属性(如 maxLines、inputType 等)

      所以,你需要像这样设置过滤器,

      InputFilter[] editFilters = <EditText>.getFilters();
      InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
      System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
      newFilters[editFilters.length] = new InputFilter.AllCaps();  
      //you can use another filter like for maxLength you can use
      // newFilters[editFilters.length] = new InputFilter.LengthFilter(10);
      <EditText>.setFilters(newFilters);
      

      有关信息,请参阅here

      这对你有用。

      【讨论】:

      • 放什么
      • 喜欢最大长度new InputFilter.LengthFilter(10);
      • 您的答案可能是正确的,但对我不起作用。谢谢你的回答。
      • 我还是小角色
      • 好的!因为你再次覆盖你的过滤器无论如何!快乐编码
      猜你喜欢
      • 2011-10-13
      • 2011-02-12
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 2011-04-27
      相关资源
      最近更新 更多