Заглавная буква для EditText - PullRequest
352 голосов
/ 26 января 2011

Я работаю над небольшим приложением со списком задач, и пока все работает довольно хорошо.Есть одна небольшая странность, которую я хотел бы выяснить.Всякий раз, когда я иду, чтобы добавить новый элемент, у меня есть диалог с представлением EditText, показывающим внутри.Когда я выбираю представление EditText, клавиатура подходит для ввода текста, как и должно быть.В большинстве приложений, по умолчанию кажется, что клавиша Shift удерживается для первой буквы ... хотя это не делает это для моего взгляда.Должен быть простой способ исправить, но я неоднократно искал ссылку и не могу ее найти.Я думаю, что должен быть атрибут xml для ссылки, загруженной адаптером, но я не могу выяснить, что это такое.

Ответы [ 15 ]

768 голосов
/ 26 января 2011

Статически (то есть в вашем XML-файле макета): установите android:inputType="textCapSentences" на вашем EditText.

Программно: вам необходимо включить InputType.TYPE_CLASS_TEXT в InputType EditText, например

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

Может комбинироваться с текстом и его вариациями для запроса прописных букв первого символа каждого предложения.

- Документы Google

68 голосов
/ 03 октября 2013

Просто используйте android:inputType="textCapWords" в вашем элементе EditText.

Например:

<EditText
    android:id="@+id/txtName"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_weight="0.7"
    android:inputType="textCapWords"
    android:textColorHint="#aaa"
    android:hint="Name Surname"
    android:textSize="12sp" />

См. Следующую ссылку для справки: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

28 голосов
/ 11 марта 2014
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

или android:inputType="textCapSentences" будут работать только при включенной настройке автокапитализации клавиатуры вашего устройства.

26 голосов
/ 07 февраля 2017

Примените следующую строку в вашем EditText в XML.

android:inputType="textCapSentences|textMultiLine"

Это также позволит многострочную поддержку.

17 голосов
/ 15 октября 2014

Я столкнулся с той же проблемой, просто поделился тем, что узнал. Может помочь вам и другим ...

Попробуйте это на вашем layout.add строку ниже в вашем EditText.

android:inputType="textCapWords|textCapSentences"

отлично работает на меня .. надеюсь, это работает и на вас ...

4 голосов
/ 20 августа 2018

Я могу заверить вас, что оба ответа будут написаны заглавными буквами и не будут содержать строку редактирования

Если вы хотите сделать это в XMl, ниже приведен код

android:inputType="textCapWords|textCapSentences"

Если вы хотите сделать это в упражнении / фрагменте и т. Д. Ниже приведен код

momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)

PS: Если у вас нет другого свойства, вы также можете легко добавить его с помощью "|" символ, просто убедитесь, что между свойствами атрибута нет пробела в xml

2 голосов
/ 20 августа 2018

В вашем макете XML-файл:

  • набор android:inputType="textCapSentences"

  • На вашем EditText первый алфавит первого слова каждого предложения должен быть прописным

  • Или android:inputType="textCapWords" в вашем EditText, чтобы первый алфавит каждого слова был прописным

2 голосов
/ 15 декабря 2017

Установить тип ввода в XML, а также в JAVA-файле следующим образом,

В XML,

android: inputType = "textMultiLine | textCapSentences"

Это также позволит многострочное , а в файле JAVA

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

убедитесь, что для Автокапитализация на клавиатуре установлено значение Включено ,

1 голос
/ 27 мая 2019

Для ввода заглавных букв в EditText вы можете выбрать два следующих типа ввода:

  1. android: inputType = "textCapSentences"
  2. android: inputType = "textCapWords"

textCapSentences
Это позволит первой букве первого слова быть заглавной в каждом предложении.

textCapWords Thisв качестве заглавной буквы будет указана первая буква каждого слова.

Если вы хотите использовать оба атрибута, просто используйте |знак с обоими атрибутами

android:inputType="textCapSentences|textCapWords"
1 голос
/ 16 июня 2018

используйте этот код только для заглавных букв в формате EditText

MainActivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:tag="true">
    </EditText>

</RelativeLayout>

MainActivity.java

EditText et = findViewById(R.id.et);
        et.addTextChangedListener(new TextWatcher() {
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
            {
                if (et.getText().toString().length() == 1 && et.getTag().toString().equals("true"))
                {
                    et.setTag("false");
                    et.setText(et.getText().toString().toUpperCase());
                    et.setSelection(et.getText().toString().length());
                }
                if(et.getText().toString().length() == 0)
                {
                    et.setTag("true");
                }
            }

            public void afterTextChanged(Editable editable) {

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