如何将Android EditText中的每个字母大写?

2022-09-01 18:08:45

我有一个编辑文本数组,我是这样做的:

        inputs[i] = new EditText(this);
        inputs[i].setWidth(376);
        inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
        tFields.addView(inputs[i]);

我希望每个字符都大写。现在,第一个单词的第一个字母是小写的,那么所有单词后面的字符都是大写的。我可以在用户输入完成后将其转换为大写,但这不是我想要的。有没有办法让这些字段按照我想要的方式运行?


答案 1

你还需要告诉它来自“类”文本:

inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);

输入类型位掩码。您可以通过将标志组合在一起|中间的(管道)字符,代表OR逻辑函数,即使当在这样的位掩码中使用时,它意味着“此标志和另一个标志”。

(这个答案与Robin的答案相同,但没有“幻数”,这是你可以在代码中放入的最糟糕的东西之一。Android API具有常量,使用它们而不是复制值并冒着最终破坏代码的风险。


答案 2

这将使所有字符在写入时都大写。

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

原始答案在这里


推荐