2011-09-12 10 views

risposta

125

Fare attenzione se si aggiunge sia android:capitalize="sentences" e android:inputType="text", in quanto quest'ultimo sembra avere la priorità rispetto al primo e l'ingresso non saranno capitalizzati.

C'è una specifica inputType per la capitalizzazione automaticamente la prima lettera:

android:inputType="textCapSentences"

Vedi http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

+1

Nizza punta! Avevo entrambi e ha funzionato come previsto su un Nexus One e un Galaxy Nexus. Ma su un dispositivo HTC Sense, le parole non erano maiuscole. android: inputType era il trucco. – BoD

+8

Parola di avviso: poiché nel mio caso il campo sarebbe diventato il nome di una persona, ho impostato android: inputType = "textPersonName". Questo non ha funzionato come previsto: ho dovuto usare android: inputType = "textCapWords" per ottenere ogni parola del nome in maiuscolo. –

+1

android: capitalize = "frasi" non dovrebbero usare questo tag bcuz è deprecato – pioneerBhawna

21

Le opzioni per Android: capitalizzare 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. 
+3

Questo metodo è deprecato. – h8pathak

+0

@ h8pathak inputType deve essere utilizzato a favore di questo metodo. –

3

nel XML di layout , aggiungi android:inputType=textCapSentences

6

provare in questo modo,

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

o android:inputType="textCapSentences" funziona solo se la vostra tastiera del dispositivo Auto Capitalizzare Impostazione abilitato.

+0

risposta accettata è grande, ma stavo cercando la risposta di codifica, questo funziona. tx –

1

Incolla questo nella vostra EditText (xml):

android:capitalize="sentences" 
8

Aggiungi questo nella vostra XML

android:inputType="textCapWords" 

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

+0

Grazie amico! Funziona come previsto :) –

8

Usa

android:inputType="textPersonName|textCapWords" 

come utilizzando solo "textPersonName" non è sufficiente in modo prime lettere del nome sarebbe stato capitalizzati.

Allo stesso modo con gli indirizzi postali:

android:inputType="textPostalAddress|textCapSentences" 
+0

grazie funziona come previsto ... –

2

hai usato la parola "Forza". 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); 
} 
1
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()}); 
+0

Mentre questo snippet di codice può risolvere la domanda, [compresa una spiegazione] (https://meta.stackexchange.com/questions/114762/explaining-intlely-code- risposte basate) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. Cerca anche di non affollare il tuo codice con commenti esplicativi, questo riduce la leggibilità sia del codice che delle spiegazioni! –

Problemi correlati