Как сделать первую букву заглавной в Android - PullRequest
0 голосов
/ 04 июля 2019

Я хочу принудительно добавить заглавную букву в 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 голосов
/ 04 июля 2019

Простое решение - Невозможно ограничить пользователя вводом заглавной буквы, поэтому

Когда пользователь закончит писать, получите строковое значение из edittext, затем измените первую букву на заглавную и используйтеэта строка.

т.е. On Button click или около того получить значение string от edittext

String content = edtEditText.getText().toString();
content.substring(0, 1).toUpperCase() + str.substring(1);
0 голосов
/ 04 июля 2019

Попробуйте средство просмотра текста, как показано ниже

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) {}
    });
0 голосов
/ 04 июля 2019

Попробуй 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; 
} 
}; 
0 голосов
/ 04 июля 2019

Вам просто нужно установить android:capitalize="sentences" в вашем XML-файле, нет необходимости устанавливать другие "textCapWords" в android:inputType, так как последний, кажется, имеет приоритет над первым и ввод не будет прописным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...