2011-09-12 21 views

Respuesta

125

tener cuidado si se agrega tanto android:capitalize="sentences" y android:inputType="text", ya que éste parece tener prioridad sobre los que no se capitalizará la primera y la entrada.

Hay una específica inputType para capitalizar la primera letra:

android:inputType="textCapSentences"

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

+1

buena propina! Tenía ambos y funcionó como se esperaba en un Nexus One y un Galaxy Nexus. Pero en un dispositivo HTC Sense, las palabras no estaban en mayúscula. android: inputType fue el truco. – BoD

+8

Palabra de advertencia: dado que en mi caso el campo iba a ser el nombre de una persona, configuré android: inputType = "textPersonName". Esto no funcionó como se esperaba: tuve que usar android: inputType = "textCapWords" para que cada palabra del nombre se capitalizara. –

+1

android: capitalize = "sentence" no debería usar esta etiqueta porque está en desuso – pioneerBhawna

21

Las opciones para androide: capitalizar son

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

Este método está en desuso. – h8pathak

+0

@ h8pathak inputType debe usarse a favor de este método. –

3

en el XML de diseño , agregue android:inputType=textCapSentences

6

probar este modo,

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

o android:inputType="textCapSentences" sólo funcionará si el teclado del dispositivo Auto Capitalizar configuración habilitada.

+0

la respuesta aceptada es genial pero estaba buscando una respuesta de codificación, esto funciona. tx –

1

Pega esto en su EditarTexto (XML):

android:capitalize="sentences" 
8

Añadir esto en su XML

android:inputType="textCapWords" 

android:inputType="textCapSentences" funcionará para frases. Sin embargo, necesitaba capitalizar cada palabra en un campo de nombre completo.

+0

Gracias hombre! Funciona como se esperaba :) –

8

Uso

android:inputType="textPersonName|textCapWords" 

como utilizando sólo "textPersonName" no es suficiente por lo que serían capitalizados primeras letras del nombre.

mismo modo con la dirección postal:

android:inputType="textPostalAddress|textCapSentences" 
+0

gracias funciona como se esperaba ... –

2

ha utilizado la palabra "cumplir". Entonces prueba esto Simplemente pase su edittext como argumento.

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

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code- respuestas basadas) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. Por favor, intente no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones! –

Cuestiones relacionadas