我要在EditText
中强制添加首字母大写。因此,我可以搜索有关很多解决方案的信息,但请注意,用户可以移动和输入小写字母。
我尝试了以下代码:
android:inputType="textCapSentences|textCapWords"
我也务实地尝试了:
EditText editor = new EditText(this);
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
任何其他解决方案。如果用户 shift 和输入小写字符,它将自动转换为大写字符。
答案 0 :(得分:0)
您只需要在XML文件中设置android:capitalize="sentences"
,而无需在android:inputType
中设置其他“ textCapWords”,因为后者似乎优先于第一个,并且输入不会大写。
答案 1 :(得分:0)
尝试使用文本查看器,如下所示
EditText et = (EditText)findViewById(R.id.editText);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count ==1){
Character.toUpperCase(s.charAt(0));
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) {}
});
答案 2 :(得分:0)
尝试InputFilter
可以正常工作了。根据您的需要修改代码。
EditText editText = (EditText) findViewById(R.id.editTextId);
editText..setFilters(new InputFilter[] { filter });
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start;i < end;i++) {
if (!Character.isLetter(source.charAt(0))) {
return "";
}
}
return null;
}
};
答案 3 :(得分:0)
简单的解决方案-无法限制用户键入首字母大写
用户写完后,从edittext
获取字符串值,然后将第一个字母更改为大写并使用该字符串。
ie
在Button click
左右,从string
中获取edittext
的值
String content = edtEditText.getText().toString();
content.substring(0, 1).toUpperCase() + str.substring(1);