如何在android中首字母大写

时间:2019-07-04 08:57:24

标签: java android android-edittext

我要在EditText中强制添加首字母大写。因此,我可以搜索有关很多解决方案的信息,但请注意,用户可以移动输入小写字母。

我尝试了以下代码:

android:inputType="textCapSentences|textCapWords"

我也务实地尝试了:

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

任何其他解决方案。如果用户 shift 输入小写字符,它将自动转换为大写字符。

4 个答案:

答案 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);