cla*_*vio 17 java android android-edittext
我有一个editTexts数组,我这样做:
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
Run Code Online (Sandbox Code Playgroud)
我希望每个角色都能被大写.现在,第一个单词的第一个字母是小写,然后所有字符后面都是大写.我可以在完成后将用户输入的内容转换为大写,但这并不是我想要的.有没有办法让这些字段按照我希望的方式运行?
tik*_*tak 20
你需要告诉它它来自"类"文本:
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]);
Run Code Online (Sandbox Code Playgroud)
该输入类型是位掩码.您可以通过放置|来组合标志 中间的(管道)字符,代表OR逻辑功能,即使在像这样的位掩码中使用它意味着"这个标志和那个其他标志".
(这个答案与Robin相同,但没有"魔术数字",这是您可以在代码中加入的最糟糕的事情之一.Android API有常量,使用它们而不是复制值并冒着最终破坏代码的风险.)
jze*_*ino 13
这将使所有字符在写入时变为大写.
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Run Code Online (Sandbox Code Playgroud)
原来答案在这里.
小智 6
你可以试试这个:
android:inputType="textCapCharacters"
Run Code Online (Sandbox Code Playgroud)
它对我有用。=)
只需使用String.toUpperCase()方法.
例如:
String str = "blablabla";
editText.setText(str.toUpperCase()); // it will give : BLABLABLA
Run Code Online (Sandbox Code Playgroud)
编辑:
将此属性添加到xml中的EditText标记layout:
android:textAllCaps="true"
Run Code Online (Sandbox Code Playgroud)
要么:
如果你想要用户类型为大写,你可以实现一个TextWatcher并使用它EditText addTextChangedListener来添加它,在onTextChange方法上取用户输入并用大写的相同文本替换它.
editText.addTextChangedListener(upperCaseTextWatcher);
final TextWatcher upperCaseTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editText.setText(editText.getText().toString().toUpperCase());
editText.setSelection(editText.getText().toString().length());
}
public void afterTextChanged(Editable editable) {
}
};
Run Code Online (Sandbox Code Playgroud)
我知道这个问题有点老了,但在这里说明了如何以不同的方式来做:
在XML中应用UpperCase
将以下内容添加到EditText XML:
android:inputType="textCapCharacters"
Run Code Online (Sandbox Code Playgroud)
将UpperCase作为Java中EditText的唯一过滤器
在这里,我们将UpperCase过滤器设置为EditText的唯一过滤器。请注意,此方法将删除所有以前添加的过滤器。
editText.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Run Code Online (Sandbox Code Playgroud)
在Java中将UpperCase添加到EditText的现有过滤器中
要保留已应用的EditText过滤器,例如inputType,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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32153 次 |
| 最近记录: |