personalizar - teclado android
¿Solo muestra botones numéricos en el Teclado Suave en Android? (8)
En el teclado android:inputType="numberDecimal"
Android, puede configurar el teclado android:inputType="numberDecimal"
para que muestre los números en lugar de un teclado android:inputType="numberDecimal"
usando android:inputType="numberDecimal"
. Sin embargo, ¿qué debo hacer si solo quiero mostrar la fila de número superior 1 2 3 4 5 6 7 8 9 0
y no las siguientes filas que comienzan con @ # $ % ...
?
¡Gracias por escuchar!
Acabo de publicar una respuesta here pero volviendo a publicar por simplicidad:
Parece que Android ha agregado la funcionalidad que estábamos buscando. Este es el xml que utilizo para la entrada numérica EditText simple:
android:inputType="numberPassword"
android:digits="0123456789"
android:singleLine="true"
android:ems="4"
android:textColor="@android:color/black"
android:gravity="center"
Cuando lo investigué, Android no tenía buenas opciones para eso. Terminé teniendo que escribir mi propia versión de una interfaz de usuario similar a un teclado suave.
El teclado numérico es lo más parecido que he encontrado (establezca inputType="phone"
en su EditText
).
La respuesta aceptada no funcionó para mí (probada en teléfonos OnePlus 3t y Samsung Galaxy S6 / S7).
Esta solución usa numberPassword pero anula el método de transformación predeterminado para que EditText muestre caracteres en lugar de mostrar puntos.
<EditText
android:id="@+id/userid"
android:inputType="numberPassword"
android:maxLength="6"
/>
// Numeric 6 character user id
EditText input = findViewById(R.id.userid);
// Process input and show characters instead of dots
input.setTransformationMethod(SingleLineTransformationMethod.getInstance());
La respuesta aceptada no funcionó para mí. Siguió mostrando otros personajes no deseados
Encontré una manera de lograr el comportamiento que quería cambiando el inputType a numberPassword y luego deshabilitando los puntos de contraseña
textInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
textInput.transformationMethod = SingleLineTransformationMethod()
Lo había implementado para Android en Xamarin. Entonces, mi código está en C #. Pero el principal se mantiene igual. Puede establecer el atributo de edittext en android:inputType="numberPassword"
.
Luego, dentro de su código, adjunte un método de transformación personalizado a su vista de texto de edición.
holder.edtxtQty.TransformationMethod = new HiddenPasswordTransformationMethod();
private class HiddenPasswordTransformationMethod : global::Android.Text.Method.PasswordTransformationMethod
{
public override Java.Lang.ICharSequence GetTransformationFormatted(Java.Lang.ICharSequence source, View view)
{
return new PasswordCharSequence(source);
}
}
private class PasswordCharSequence : Java.Lang.Object, Java.Lang.ICharSequence
{
private char DOT = ''/u2022'';
private Java.Lang.ICharSequence _source;
public PasswordCharSequence(Java.Lang.ICharSequence source)
{
_source = source;
}
public char CharAt(int index)
{
return _source.CharAt(index);
}
public int Length()
{
return _source.Length();
}
public Java.Lang.ICharSequence SubSequenceFormatted(int start, int end)
{
return _source.SubSequenceFormatted(start, end); // Return default
}
public IEnumerator<char> GetEnumerator()
{
return _source.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _source.GetEnumerator();
}
}
Solo debe agregar esta línea en su código:
input.setRawInputType(Configuration.KEYBOARD_12KEY);
esto mostrará solo el teclado numérico.
android:inputType="phone"
android:digits="1234567890"
es una opción