Respuestas:
¡Android en realidad tiene un InputFilter incorporado solo para esto !
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Tenga cuidado, setFilters
se restablecerán todos los demás atributos que se establecieron a través de XML (es decir maxLines
, inputType
, imeOptinos
...). Para evitar esto, agregue Filtros a los ya existentes.
InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;
<EditText>.setFilters(newFilters);
maxLength
), Intenta anexar el InputFilter.AllCaps()
de editText.getFilters
matriz. Ver stackoverflow.com/a/18934659/3890983
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin es maravilloso! <3
Si desea obligar al usuario a escribir en mayúsculas de forma predeterminada en su EditText, solo necesita agregar android:inputType="textCapCharacters"
. (El usuario aún puede cambiar manualmente a minúsculas).
Establecer el input type
a TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
. El keyboard
debería honrar eso.
Se puede usar de dos maneras.
Primera forma:
Establecer android:inputType="textCapSentences"
en su EditText.
Segunda forma:
Cuando el usuario ingrese el número, debe usar el observador de texto y cambiarlo por minúscula a mayúscula.
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
edittext.setSelection(edittext.length()); //fix reverse texting
}
}
});
Puede agregar la android:textAllCaps="true"
propiedad a su archivo xml en EditText. Esto hará que el teclado de entrada de software aparezca en modo mayúsculas. El valor que ingrese aparecerá en mayúsculas. Sin embargo, esto no asegurará que el usuario solo pueda ingresar UpperCase
letras. Si lo desean, aún pueden recurrir a las letras minúsculas. Si desea asegurarse de que la salida del archivo Edittext
esté en mayúsculas, debe convertir manualmente la cadena de entrada utilizando el toUpperCase()
método de String
clase.
android:textAllCaps="true"
es solo una propiedad de TextView ( stackoverflow.com/a/28803492/5268730 ). Usar en su android:inputType="textCapCharacters"
lugar.
Deberías poner android:inputType="textCapCharacters"
con Edittext en el archivo xml.
En lugar de preocuparse por tratar con el teclado, ¿por qué no simplemente aceptar cualquier entrada, minúscula o mayúscula y convertir la cadena a mayúscula?
El siguiente código debería ayudar:
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
Esto es fácil de usar ya que no es necesario que el usuario sepa que necesita la cadena en mayúsculas. Espero que esto ayude.
Aún mejor ... un trazador de líneas en Kotlin ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
¡Hecho!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
En kotlin , en el archivo .kt, realice los cambios:
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
Utilice la propiedad sintética para el acceso directo del widget con id. Y en XML, para su texto de edición agregue un par de marcas más como:
<EditText
android:id="@+id/edit_text_qr_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...other attributes...
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Esto actualizará el teclado como mayúsculas habilitadas.
Usar filtro de entrada
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
}
editText.setSelection(editText.getText().length());
}
});
Solo haz esto:
// ****** Every first letter capital in word *********
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
/>
//***** if all letters are capital ************
android:inputType="textCapCharacters"
Para mí funcionó agregando android: textAllCaps = "true" y android: inputType = "textCapCharacters"
<android.support.design.widget.TextInputEditText
android:layout_width="fill_parent"
android:layout_height="@dimen/edit_text_height"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Para obtener todo el capital, use lo siguiente en su XML:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
Según la respuesta aceptada, esta respuesta hace lo mismo, pero en Kotlin. Solo para facilitar el copypasting: ·)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
filters += InputFilter.AllCaps()
: D
Para obtener el teclado en mayúscula cuando haga clic en editar texto, use este código en su xml,
<EditText
android:id="@+id/et"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="Input your country"
android:padding="10dp"
android:inputType="textCapCharacters"
/>
Estoy usando Visual Studio 2015 / Xamarin para construir mi aplicación para Android 5.1 y Android 6.0 (la misma apk instalada en ambos).
Cuando especifiqué android:inputType="textCapCharacters"
en mi axml, el teclado AllCaps apareció como se esperaba en Android 6.0, pero no en Android 5.1. He añadido android:textAllCaps="true"
a mi axml y todavía sin teclado MAYÚSCULAS en Android 5.1. Configuré un filtro usandoEditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
y aunque el teclado virtual muestra caracteres en minúsculas en Android 5.1, el campo de entrada ahora es AllCaps.
EDITAR: Las diferencias de comportamiento que observé y supuse que estaban relacionadas con el sistema operativo se debieron en realidad a que tenía diferentes versiones de Google Keyboard en los dispositivos de prueba. Una vez que actualicé los dispositivos al último Teclado de Google (lanzado en julio de 2016 a partir de este escrito), el comportamiento de 'Mayúsculas' fue consistente en todos los sistemas operativos. Ahora, todos los dispositivos muestran caracteres en minúscula en el teclado, pero la entrada es Mayúsculas debido aSetFilters(new IInputFilter[] { new InputFilterAllCaps() });
Xamarin equivalente de la respuesta de ErlVolton:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
Simplemente, agregue el siguiente código a su EditText de su archivo xml.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Y si desea permitir tanto el texto en mayúscula como los dígitos, use el siguiente código.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
embargo, el código debería ser .