禁用小字符EditText InputType

时间:2017-09-28 13:09:06

标签: android xml android-edittext

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

android:inputType="textCapCharacters"

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

由于

enter image description here

5 个答案:

答案 0 :(得分:5)

您可以通过以下代码执行此操作:

将UpperCase应用为EditText的唯一过滤器

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

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

将UpperCase添加到EditText的现有过滤器

要保留已经应用的EditText过滤器(让我们说maxLines,maxLength等),您需要检索应用的过滤器,将UpperCase过滤器添加到这些过滤器,然后将它们设置回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);

答案 1 :(得分:1)

对我有用, 试试这个

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

是的,您可以通过编程方式进行设置。 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

这对你有用。

答案 4 :(得分:0)

你可以做那样的事情

如果小写字母将其转换为高位字母,您可以检查用户输入的每个字母

例如: -

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