it-swarm.it

Come forzare EditText per iniziare il testo con la maiuscola?

Ho un EditText e ho bisogno del testo al suo interno (quando l'utente digita dentro) per essere avviato con la lettera maiuscola.

68
Eugene

Fai attenzione se aggiungi sia Android:capitalize="sentences" sia Android:inputType="text", poiché quest'ultimo sembra avere la priorità sul primo e l'input non sarà maiuscolo.

C'è un inputType specifico per la capitalizzazione automatica della prima lettera:

Android:inputType="textCapSentences"

Vedi http://developer.Android.com/reference/Android/widget/TextView.html#attr_Android:inputType

137
Maragues

Le opzioni per Android: in maiuscolo sono

Android:capitalize="none", which won't automatically capitalize anything.

Android:capitalize="sentences", Which will capitalize the first Word of each sentence.

Android:capitalize="words", Which Will Capitalize The First Letter Of Every Word.

Android:capitalize="characters", WHICH WILL CAPITALIZE EVERY CHARACTER.
20
DeadlyChambers

Uso

Android:inputType="textPersonName|textCapWords"

poiché l'utilizzo di solo "textPersonName" non è sufficiente, le prime lettere del nome saranno maiuscole.

Allo stesso modo con gli indirizzi postali:

Android:inputType="textPostalAddress|textCapSentences"
12
ViliusK

Aggiungi questo nel tuo XML 

 Android:inputType="textCapWords"

Android:inputType="textCapSentences" funzionerà per le frasi. Tuttavia, avevo bisogno di capitalizzare ogni parola in un campo nome completo.

8
mukulg

Prova in questo modo,

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

o Android:inputType="textCapSentences" funzionerà solo se la tastiera del tuo dispositivo Auto capitalizza Impostazioni abilitate.

6
Lakshmanan

Nel layout xml, aggiungi Android:inputType=textCapSentences

3
Mickey Tin

Hai usato la parola "Applica". Quindi prova questo. Basta passare il tuo edittext come argomento.

public static void setCapitalizeTextWatcher(final EditText editText) {
    final TextWatcher textWatcher = new TextWatcher() {

        int mStart = 0;

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mStart = start + count;
        }

        @Override
        public void afterTextChanged(Editable s) {
             String input = s.toString();
            String capitalizedText;
            if (input.length() < 1)
                capitalizedText = input;
            else
                capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);
            if (!capitalizedText.equals(editText.getText().toString())) {
                editText.addTextChangedListener(new TextWatcher() {
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {

                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        editText.setSelection(mStart);
                        editText.removeTextChangedListener(this);
                    }
                });
                editText.setText(capitalizedText);
            }
        }
    };

    editText.addTextChangedListener(textWatcher);
}
2
Azim Ansari

Nel layout xml, aggiungi Android:capitalize="sentences"

2
MByD
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
1
SAndroidD

Incolla questo nel tuo edittext (xml):

  Android:capitalize="sentences"
1
Pihu

In caso di password che inizia da maiuscole sarà:

Android:inputType="textPassword|textCapSentences"

nel caso in cui ti sei imbattuto nel fastidioso caso di impostare Android: inputType = textCapSentences e poi finire con one-liner EditText, ecco la soluzione:

    Android:inputType="textCapSentences|textMultiLine"
0
awsleiman