validar texto style studio solo personalizar obtener numeros eventos edittext datos caja android android-layout

style - ¿Cómo escribir el estilo al texto de error de EditText en Android?



validar edittext en android studio (6)

Estoy intentando escribir un nuevo estilo personalizado para mi aplicación de Android. Necesito dar estilo a errorText que aparece después de establecer setError en EditText .

¿Cómo puedo personalizar el estilo?

Por ejemplo: quiero establecer su background blanco y textColor : azul, etc. en style.xml


¡Siga este enlace para tener una bonita apariencia de diseño de materiales con un mensaje de error! materialdoc


Esto funciona bien!

private fun setErrorOnSearchView(searchView: SearchView, errorMessage: String) { val id = searchView.context .resources .getIdentifier("android:id/search_src_text", null, null) val editText = searchView.find<EditText>(id) val errorColor = ContextCompat.getColor(this,R.color.red) val fgcspan = ForegroundColorSpan(errorColor) val builder = SpannableStringBuilder(errorMessage) builder.setSpan(fgcspan, 0, errorMessage.length, 0) editText.error = builder }


He visto la respuesta aceptada pero no me gusta la biblioteca propuesta

Creo que esto es un error en el marco de Android y he archivado un error aquí: https://code.google.com/p/android/issues/detail?id=158590

EDIT: el widget de la biblioteca de diseño android TextInputLayout se puede utilizar para obtener un mejor manejo de errores en EditText.

Vea cómo se ve aquí: https://www.youtube.com/watch?v=YnQHb0fNtF8

Y cómo implementarlo aquí: http://code.tutsplus.com/tutorials/creating-a-login-screen-using-textinputlayout--cms-24168


La solución está al final y aquí está la captura de pantalla:

Algunas explicaciones

Es posible que pueda configurar el color de texto usando la siguiente línea

yourEditText.setError(Html.fromHtml("<font color=''blue''>this is the error</font>"));

Sin embargo, esto podría no estar garantizado.

De acuerdo con el código fuente, este Popup que se muestra es de tipo ErrorPopup que es una clase interna dentro de TextView . El contenido de este Popup es un solo TextView inflado de com.android.internal.R.layout.textview_hint

final TextView err = (TextView) inflater.inflate(com.android.internal.R.layout.textview_hint, null);

El fondo de esta Popup depende de si debe colocarse sobre el anclaje:

if (above) { mView.setBackgroundResource(com.android.internal.R.drawable.popup_inline_error_above); } else { mView.setBackgroundResource(com.android.internal.R.drawable.popup_inline_error); }

Dado que todos los recursos de Android utilizados para crear la ventana emergente son internos y, en última instancia, están codificados, la mejor opción sería crear su propia ventana emergente de error. Esto sería muy fácil y no EditText realmente interfiriendo con el EditText normal porque el popup predeterminado se usa meramente para mostrar el error y, por lo tanto, crear el tuyo estaría bien.

SOLUCIÓN

Lo he creado aquí: WidgyWidgets


No creo que pueda personalizar su estilo de esa manera, ya que la ventana emergente de error usa un estilo interno :

mPopupInlineErrorBackgroundId = getResourceId(mPopupInlineErrorBackgroundId, com.android.internal.R.styleable.Theme_errorMessageBackground); mView.setBackgroundResource(mPopupInlineErrorBackgroundId);

Sin embargo, puede establecer un ícono de error Spanned y personalizado utilizando el setError(CharSequence, Drawable) sobrecargado setError(CharSequence, Drawable) .

Puede crear fácilmente un Spanned desde HTML usando fromHtml() .

Sin embargo, aún no podrá configurar la imagen de fondo emergente :-(


Por favor, agréguela en el momento de la validación del formulario si el campo de edición de texto está en blanco.

int ecolor = R.color.black; // whatever color you want String estring = "Please enter a valid email address"; ForegroundColorSpan fgcspan = new ForegroundColorSpan(ecolor); SpannableStringBuilder ssbuilder = new SpannableStringBuilder(estring); ssbuilder.setSpan(fgcspan, 0, estring.length(), 0); edtEmail.requestFocus(); edtEmail.setError(ssbuilder);

cuando escribe en editar texto, la señal de error se apaga automáticamente

Gracias Sachin