EditText setError () con el icono pero sin mensaje Popup

Quiero tener alguna validación para mi EditText donde quiero mostrar " Introduzca aquí la descripción de la imagen "(Que viene cuando se pone editText.setError("blah blah")) pero no quiere que el texto en el popup que muestra" blah blah ".

¿Hay alguna forma de hacerlo? Una forma es crear un diseño personalizado que muestre el icono de la imagen en el EditText. Pero ¿hay alguna solución mejor?

Problema resuelto después de muchas investigaciones y permutaciones- (También gracias a @van)

Cree una nueva clase que ampliará EditText algo como EditText

 public class MyEditText extends EditText { public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setError(CharSequence error, Drawable icon) { setCompoundDrawables(null, null, icon, null); } } 

Utilice esta clase como una vista en su xml como este-

 <com.raj.poc.MyEditText android:id="@+id/et_test" android:layout_width="fill_parent" android:layout_height="wrap_content"/> 

Ahora en el tercer paso, simplemente establezca un TextWatcher a su vista de texto personalizado como este-

  et = (MyEditText) findViewById(R.id.et_test); errorIcon = getResources().getDrawable(R.drawable.ic_error); errorIcon.setBounds(new Rect(0, 0, errorIcon.getIntrinsicWidth(), errorIcon.getIntrinsicHeight())); et.setError(null,errorIcon); et.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { if(s.toString().length()>6){ et.setError("", null); }else{ et.setError("", errorIcon); } } }); 

Donde R.drawable.ic_error =

Mantener el texto null resuelve el problema Pero si mantenemos sólo null en setError (null), esto no mostrará el error de validación; Debe ser nulo junto con el segundo parámetro.

No es necesario crear una nueva clase EditText o cambiar xml. La solución es muy simple:

 Edittext editText= (EditText) rootView.findViewById(R.id.email); String str= editText.getText().toString(); if(str.equalsIgnoreCase("") ){ Drawable dr = getResources().getDrawable(R.drawable.error); //add an error icon to yur drawable files dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight()); editText.setCompoundDrawables(null,null,dr,null); } 

Lo sentimos Rajkiran, pero su solución no está funcionando en Android 4.2 versión. Si estoy tratando de establecer valor null para el error, ni siquiera se muestra. La solución que se me ocurrió fue extender el EditText y sobreescribir setError . No tengo sólo indicador de error sin popup.

 @Override public void setError(CharSequence pError, Drawable pIcon) { setCompoundDrawables(null, null, pIcon, null); } 

He estado tratando con el mismo problema. Quise usar .setError() a mi EditText cuando el usuario inserta la entrada nula. Pero creo que el mensaje pop-out es molesto, especialmente cuando tienes más EditText s. Mi solución fue ingenua y simple, pero funcionó en todos los dispositivos que he probado hasta ahora.

He creado mi propia clase myEditText y sólo @Override este método:

  @Override public void setError(CharSequence error, Drawable icon) { setCompoundDrawables(null, null, icon, null); } 

Luego use en layout.xml

  <cz.project.myEditText ... /> 

Y finalmente en mi código puse onFocusChangeListener a myEditText , así que cuando alguien hace clic, el icono desaparece.

  myEditText input = (myEditText) findViewById(R.id.input); input.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { input.setError(null); }); if(val == null) input.setError(""); 

Funciona Exactamente como quiero = ningún mensaje emergente cuando .setError() se llama en EditText .

Para obtener sólo el error de icono sin un mensaje de error-popup sólo cuando setError("") se llama (es decir, establecer una cadena vacía como mensaje de error) Yo uso una edición personalizada EditText-clase donde sobrescribir setError(CharSequence, Drawable) Me gusta esto:

 @Override public void setError(CharSequence error, Drawable icon) { if (error == null) { super.setError(null, icon); setCompoundDrawables(null, null, null, null); } else if (error.toString().equals("")) setCompoundDrawables(null, null, icon, null); else super.setError(error, icon); } 

Todo lo demás se queda igual:

Use setError(null) para obtener ni el icono ni el mensaje-popup.

Utilice setError(errorMessage) , donde errorMessage es una cadena con longitud 1 como mínimo, para obtener el icono y mensaje-popup.

Éste es el muy útil cuando usted quiere mostrar los mensajes de error para el campo de edittext cuando el usuario introduce la información incorrecta. Esto es muy simplemente el programa solamente usted tiene que utilizar el método del serError () en el edittext.

Paso 1: Crear el botón e implementar onclickListener.

 btnLogin.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); 

Paso 2: Valide los campos de entrada y establezca el error en el campo de entrada.

 if(edName.length()>3){ if(edNumber.length()>3){ Toast.makeText(getApplicationContext(), "Login success", Toast.LENGTH_SHORT).show(); }else{ edNumber.setError("Number Mininum length is 4"); } }else{ edName.setError("Name Mininum length is 4"); } 

Consulte este enlace para más información: http://velmuruganandroidcoding.blogspot.in/2014/08/set-error-message-in-edittext-android.html

  • Cómo utilizar InputConnectionWrapper?
  • Subrayar texto debajo de la propiedad de texto
  • Barra de herramientas de selección de texto no visible en las versiones de pre-malvavisco sin ActionBar
  • Centrarse en segundo edittext sólo si primero es no-vacío android
  • Android: Edittext con centro de gravedad que no funciona en el dispositivo
  • Enlaces clicables y menú de copiar / pegar en EditView en android
  • Android Custom EditText que no muestra el cursor en ICS
  • Cómo colocar el botón en el interior del texto de edición
  • Android: sólo muestra el cursor en edittext cuando se muestra el teclado
  • ¿Cómo puedo activar una acción cuando el usuario ha ingresado?
  • Scrollable MultiLine TextView dentro de ScrollView (sin interacción táctil)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.