Primera letra mayúscula para EditText

Estoy trabajando en una pequeña aplicación de lista de cosas pendientes y hasta ahora todo ha funcionado bastante bien. Hay una pequeña peculiaridad que me gustaría descubrir. Cada vez que voy a agregar un nuevo artículo, tengo un cuadro de diálogo con una vista EditText que muestra adentro. Cuando selecciono la vista Editar texto, el teclado aparece para ingresar texto, como debería. En la mayoría de las aplicaciones, el valor predeterminado parece ser que la tecla Mayús se mantiene para la primera letra … aunque no lo hace para mi vista. Tiene que haber una manera simple de solucionarlo, pero he buscado repetidamente la referencia y no puedo encontrarla. Estoy pensando que tiene que haber un atributo xml para la referencia cargada por el Adaptador, pero no puedo descubrir cuál es.

Estáticamente (es decir, en su archivo XML de diseño): configure android:inputType="textCapSentences" en su EditText .

Programáticamente: debe incluir InputType.TYPE_CLASS_TEXT en el InputType de EditText , por ejemplo

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

Se puede combinar con el texto y sus variaciones para solicitar la capitalización del primer carácter de cada oración.

– Google Docs

Simplemente use android:inputType="textCapWords" en su elemento EditText.

Por ejemplo:

  

Consulte el siguiente enlace para referencia: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

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

o android:inputType="textCapSentences" solo funcionará si el teclado de su dispositivo se activa automáticamente.

Aplique la siguiente línea en su EditText en XML.

 android:inputType="textCapSentences|textMultiLine" 

También permitirá el soporte multilínea.

Encontré el mismo problema, solo compartí lo que descubrí. Podría ayudarte a ti y a los demás …

Pruebe esto con su diseño. Agregue la línea siguiente en su EditText .

 android:inputType="textCapWords|textCapSentences" 

funciona bien en mí … espero que también funcione en ti …

Establezca el tipo de entrada en XML y en un archivo JAVA como este,

En XML,

android: inputType = “textMultiLine | textCapSentences”

También permitirá multilínea y en el archivo JAVA,

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

asegúrese de que la configuración de Capitalización automática de su teclado esté Activada .

Puedo asegurarles que tanto las respuestas serán mayúsculas como la primera letra y no harán una sola línea de texto de edición.

Si quieres hacerlo en XMl a continuación es el código

 android:inputType="textCapWords|textCapSentences" 

Si quieres hacerlo en actividad / fragmento, etc., a continuación, está el código

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

PD: si tiene otra propiedad también puede agregarla fácilmente con una tubería “|” símbolo, solo asegúrese de que no haya espacio en xml entre las propiedades del atributo

Pruebe este código, capitalizará el primer carácter de todas las palabras.

– establecer addTextChangedListener para la vista EditText

edt_text.addTextChangedListener (vigilante);

– Agregar TextWatcher

 TextWatcher watcher = 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 if (input.length() > 1 && input.contains(" ")) { String fstr = input.substring(0, input.lastIndexOf(" ") + 1); if (fstr.length() == input.length()) { capitalizedText = fstr; } else { String sstr = input.substring(input.lastIndexOf(" ") + 1); sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1); capitalizedText = fstr + sstr; } } else capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); if (!capitalizedText.equals(edt_text.getText().toString())) { edt_text.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) { edt_text.setSelection(mStart); edt_text.removeTextChangedListener(this); } }); edt_text.setText(capitalizedText); } } }; 

Anteriormente solía ser android:capitalize="words" , que ahora está en desuso. La alternativa recomendada es usar android:inputType="textCapWords"

Tenga en cuenta que esto solo funcionará si el teclado de su dispositivo activa automáticamente la configuración de capitalización.

Para hacer esto programáticamente, use el siguiente método:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

use este código solo para mayúsculas en primer lugar para EditText

MainActivity.xml

     

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) { } }); 

En su archivo XML de diseño: configure android: inputType = “textCapSentences” en su EditText para tener el primer alfabeto de la primera palabra de cada oración como capital O android: inputType = “textCapWords” en su EditText para tener el primer alfabeto de cada palabra como capital