android - studio - Custom EditText no funciona después de configurar su tipo de entrada a través de setInputType()
plain text android studio (2)
Debes configurar android: digits = "0123456789" en xml. Pero no sé por qué ...
EditText
un EditText
personalizado y onDraw()
su función onDraw()
. Todo funcionaba bien (podía dibujar cualquier cosa dentro de EditText) hasta que quise cambiar el método de entrada para este EditText
y llamé a esta función:
setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
No importa cuándo y dónde lo llamo: después de haber sido llamado, mi EditText
personalizado desaparece, y solo se muestra el EditText
original, aunque mi función anulada onDraw()
, y dentro de ella, se invoca su super función (no importa dónde exactamente lo invoco).
También he intentado jugar con colores transparentes como se sugiere en algunos mensajes aquí: setBackgroundColor(Color.TRANSPARENT)
en la clase base, y también paint.setColor(0x80FF0000)
para mi objeto Paint
en la función onDraw()
pero no tuvieron ningún efecto.
EDITAR: He descubierto que el problema no está en establecer el tipo de entrada, sino establecer el tipo de entrada Y la gravedad de EditText
simultáneamente:
setGravity(Gravity.CENTER_HORIZONTAL);
Si alguno de ellos no está configurado, mi vista personalizada se dibuja como se esperaba. Además (y lo que es aún más extraño): con Gravity.CENTER_VERTICAL
no hay problema, solo con Gravity.CENTER_HORIZONTAL
y Gravity.CENTER
.
Parece que estas dos configuraciones son mutuamente excluyentes. ¿Podría esto ser posible?
Verifique sus valores getScrollX()
. Apuesto a que verás valores como 1000000 píxeles. EditText traduce su lienzo de esta manera extraña, por lo que aunque estés dibujando en realidad, está muy lejos del clip visible.
Para resolverlo, simplemente agregue el valor scrollX a sus coordenadas de dibujo.