【发布时间】:2017-09-28 13:09:05
【问题描述】:
有没有办法实现如下图? 我有一个 EditText,我希望 InputType 始终是 Caps。 我试过用这个
android:inputType="textCapCharacters"
它工作正常,但是当我按下软键盘上的顶部箭头图标(如下图所示)并开始输入文本时,文本将以小字符显示。有没有办法禁用顶部箭头键?
谢谢
【问题讨论】:
标签: android xml android-edittext
有没有办法实现如下图? 我有一个 EditText,我希望 InputType 始终是 Caps。 我试过用这个
android:inputType="textCapCharacters"
它工作正常,但是当我按下软键盘上的顶部箭头图标(如下图所示)并开始输入文本时,文本将以小字符显示。有没有办法禁用顶部箭头键?
谢谢
【问题讨论】:
标签: android xml android-edittext
你可以通过如下代码来实现:
将大写字母作为唯一过滤器应用于 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);
【讨论】:
它对我有用, 试试这个
edittext.setInputType(InputType.TYPE_CLASS_TEXT);
edittext.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
【讨论】:
setFilters 是没有意义的,除非您检索以前的过滤器。这样第一行代码就可以正常工作,因为它不存在
您可以控制直接响应用户操作的键盘输入。 检查这个link
【讨论】:
是的你可以这样做
您可以检查用户输入的每个字母是否将其小写字母转换为大写字母
例如:-
如果用户输入 e 将其替换为 E
【讨论】:
是的,您可以通过编程方式进行设置。 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);