Cuando un EditText está en modo de contraseña, parece que la sugerencia se muestra en una fuente diferente (¿mensajería?). ¿Cómo puedo evitar esto? Me gustaría que la pista aparezca en la misma fuente que cuando EditText no está en modo de contraseña.
Mi xml actual:
<EditText
android:hint="@string/edt_password_hint"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:singleLine="true" />
android
fonts
passwords
android-edittext
hpique
fuente
fuente
Respuestas:
Cambiar el tipo de letra en xml tampoco funcionó en el texto de la pista. Encontré dos soluciones diferentes, la segunda de las cuales tiene un mejor comportamiento para mí:
1) Elimine
android:inputType="textPassword"
de su archivo xml y, en su lugar, configúrelo en Java:Con este enfoque, la fuente de sugerencia se ve bien, pero a medida que escribe en ese campo de edición, no verá cada carácter en texto sin formato antes de que se convierta en un punto de contraseña. Además, al realizar la entrada en pantalla completa, los puntos no aparecerán, sino la contraseña en texto claro.
2) Deja
android:inputType="textPassword"
en tu xml. En Java, TAMBIÉN establezca el tipo de letra y la contraseña Método:Este enfoque me dio la fuente de pistas que quería Y me da el comportamiento que quiero con los puntos de contraseña.
¡Espero que ayude!
fuente
password.setTransformationMethod(new PasswordTransformationMethod());
necesario? Parece funcionar bien para mí sin.setTransformationMethod()
tampoco. Sin embargo, hay algunos efectos secundarios de este enfoque que lo hacen indeseable porque da como resultado un comportamiento no estándar en comparación con eltextPassword
comportamiento predeterminado . Para una solución más completa, vea la clase auxiliar en: stackoverflow.com/a/17582092/231078inputType="textPassword"
Encontré este consejo útil de la Guía de Diálogos
Por ejemplo
fuente
Esto es lo que hice para solucionar este problema. Por alguna razón, no tuve que configurar el método de transformación, así que esta puede ser una mejor solución:
En mi xml:
En mi
Activity
:fuente
El enfoque setTransformationMethod rompe android: imeOption para mí y permite que los retornos de carro se escriban en el campo de contraseña. En cambio estoy haciendo esto:
Y no estoy configurando android: password = "true" en XML.
fuente
La respuesta proporcionada por manisha funciona, pero deja el campo de contraseña en un estado no estándar en comparación con el predeterminado. Es decir, la fuente predeterminada se aplica también al campo de contraseña, incluidos los reemplazos de puntos y los caracteres de vista previa que aparecen antes de ser reemplazados por los puntos (así como cuando es un campo de "contraseña visible").
Para arreglar esto y hacer que 1) se vea y actúe exactamente como el
textPassword
tipo de entrada predeterminado , pero también 2) permita que el texto de la sugerencia aparezca en una fuente predeterminada (no monoespacio), debe tener unTextWatcher
campo en el campo que pueda alternar fontface correctamente de ida y vuelta entreTypeface.DEFAULT
yTypeface.MONOSPACE
según si está vacío o no. Creé una clase auxiliar que se puede usar para lograr eso:Luego, para usarlo, todo lo que necesita hacer es llamar al
register(View)
método estático. Todo lo demás es automático (¡incluso omitir la solución si la vista no lo requiere!):fuente
EditText
(por ejemplo, haciendo que el texto de sugerencia sea Roboto Light), la configuraciónTypeface.DEFAULT
posterior lo anulará. Llamofield.getTypeface()
por adelantado y uso ese tipo de letra cada vez que necesito restablecer la fuente "predeterminada" más adelante.field.getTypeface()
no parecen ser 100% confiables (ya que a menudo solo recuperarás la fuente monoespacial), pero crear una Tipografía víaTypeface.create()
y luego configurar eso parece funcionar bien.Hay muchas maneras de resolver este problema, pero cada una tiene ventajas y desventajas. Aquí está mi prueba
Solo enfrento este problema de fuente en algún dispositivo (lista al final de mi respuesta) cuando habilito la contraseña de entrada
Si uso
android:inputType="textPassword"
, este problema no sucedióAlgo que he intentado
1) Use en su
setTransformationMethod
lugarinputType
2) uso
Typeface.DEFAULT
sans-serif-light
es una fuente predeterminada para todosView
en mi aplicación => despuéssetTypeface(Typeface.DEFAULT)
, laEditText
fuente aún se ve diferente en algunos dispositivos3) uso
android:fontFamily="sans-serif"
MI SOLUCIÓN
Prueba de
algunos problemas de fuente de la cara del dispositivo
Algunos dispositivos no enfrentan problemas de fuente
fuente
setTransformationMethod
método (donde no enfrentaba un problema).setTransformationMethod
funcionará pero el teclado no se mostrará bien. Sin embargo, si lo haces bien, sigue siendo así porque es solo un pequeño problemaLas otras respuestas son la solución correcta para la mayoría de los casos.
Sin embargo, si está utilizando una
EditText
subclase personalizada para, por ejemplo, aplicar una fuente personalizada de forma predeterminada, hay un problema sutil. Si establece la fuente personalizada en el constructor de su subclase, el sistema la sobrescribirá si la estableceinputType="textPassword"
.En este caso, mueva su estilo a
onAttachedToWindow
después de susuper.onAttachedToWindow
llamada.Implementación de ejemplo:
fuente
Sé que este puede ser el más antiguo, pero me he metido en algo relacionado con este problema cuando lo usé
InputType
yapp:passwordToggleEnabled="true"
juntos.Entonces, escribir esto, ya que puede ayudar a alguien por aquí.
Quiero usar una fuente personalizada para el campo de contraseña junto con la
app:passwordToggleEnabled
opción para mi campo de entrada de contraseña. Pero en la biblioteca de soporte 27.1.1 (mientras escribía esto), se bloqueaba.Entonces el código era como a continuación,
El código anterior no se ha
inputType
definido en XMLY en Java,
setTransformationMethod
me ayudará a adquirir las propiedades deltextPassword
tipo de entrada y también estoy contento con mi estilo de fuente personalizado.Pero el bloqueo mencionado a continuación ocurrió en todos los niveles de API con la biblioteca de soporte 27.1.1.
Esto estaba fallando debido a la clase
onRestoreInstanceState
internaTextInputLayout
.Reproduzca pasos: cambie la visibilidad de la contraseña y minimice la aplicación y ábrala desde las aplicaciones recientes. Uh, ho se estrelló!
Todo lo que necesitaba es la opción de alternar contraseña predeterminada (usando la biblioteca de soporte) y la fuente personalizada en el campo de entrada de contraseña.
Después de un tiempo, descubierto haciendo lo siguiente,
En XML, agregado
android:inputType="textPassword"
En el código de Java anterior,
Adquirí el tipo de letra personalizado del nombre de usuario
EditText
y lo apliqué alTextInputLayout
campo de contraseña. Ahora no necesita establecer el tipo de letra explícitamente en la contraseña,EditText
ya que adquirirá laTextInputLayout
propiedad.Además, eliminé
password.setTransformationMethod(new PasswordTransformationMethod());
Al hacer esto,
passwordToggleEnabled
está funcionando, la fuente personalizada también se aplica y adiós al bloqueo. Espero que este problema se solucione en las próximas versiones de soporte.fuente
También puede usar un widget personalizado. Es muy simple y no satura tu código de Actividad / Fragmento.
Aquí está el código:
Y su XML se verá así:
fuente
TextView
parece sobrescribir el tipo de letra personalizado después de la llamada del constructor. Proporcionó una solución alternativa en otra respuesta.usa la biblioteca de caligrafía .
entonces todavía no actualizará los campos de contraseña con la fuente correcta. así que haz esto en código no en xml:
fuente
Recientemente agregué la capacidad de activar / desactivar el monoespacio a una extensión de EditText específicamente para contraseñas que puede ayudar a algunas personas. No utiliza,
android:fontFamily
por lo que es compatible <16.fuente
También puedes usar el
Juntos con
fuente
Utilizo esta solución para alternar el Tipo de letra dependiendo de la visibilidad de la pista. Es similar a la respuesta de Joe, pero en su lugar extiende EditText:
fuente
En caso de que esté utilizando la biblioteca de caligrafía en combinación con un TextInputLayout y un EditText, el siguiente código funciona bien.
fuente
Un caso extraño quizás, pero he experimentado con esto y descubrí que:
¡cambió el tamaño de la fuente de la pista en lugar de la fuente en sí! Esto sigue siendo un efecto no deseado. Curiosamente, la operación inversa:
Mantiene el mismo tamaño de fuente.
fuente
Encontré una solución segura a este problema
La mejor manera de Hola, encontré una solución segura para este problema
La mejor manera es crear un editText personalizado y guardar el valor de la tipografía como temporal y luego aplicar el método a los cambios de InputType. Finalmente, establecemos el valor de la cara del tipo temporal en editText. al igual que :
fuente
¡Así se hace una contraseña de entrada que tiene una pista que no se convirtió a * y tipo de letra predeterminado!
En XML:
En la actividad:
gracias a: mango y rjrjr por la información: D.
fuente
como el anterior, pero asegúrese de que los campos no tengan el estilo en negrita en xml, ya que nunca se verán iguales incluso con la corrección anterior.
fuente