Android EditText.setError () produce texto de error invisible

Tengo un EditText muy simple, como sigue:

<EditText android:id="@+id/myedit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:maxLength="32"/> 

En algún código de validación, utilizo EditText.setError() Android para mostrar cualquier error de validación. Esto funciona bien en OS 2.x, pero no en un dispositivo OS 3.x (Xoom) – en el Xoom se puede ver el contorno del mensaje emergente de error pero no se puede ver el texto de error.

Supongo que el texto está ahí, pero es invisible. ¿Cómo lo hago visible? No veo un android:textColor que se relaciona con el texto de error.

Además, si el texto es realmente invisible, entonces cualquier idea de por qué 2.x se comporta de forma diferente a 3.x – parece que esto causaría problemas de compatibilidad hacia atrás.

Gracias.

Parece que puede solucionar este problema llamando a EditText.setError () con un objeto SpannableStringBuilder en lugar de una cadena.

 int ecolor = xxxx; // whatever color you want String estring = "Input is incorrect"; ForegroundColorSpan fgcspan = new ForegroundColorSpan(ecolor); SpannableStringBuilder ssbuilder = new SpannableStringBuilder(estring); ssbuilder.setSpan(fgcspan, 0, estring.length(), 0); myedittext.setError(ssbuilder); 

Para una solución más elegante, pruebe esta:

 editText.setError(Html.fromHtml("<font color='red'>Error Message!</font>")); 

¡Utiliza el tema padre nativo para el nivel adecuado de la API en tu propio estilo personalizado! "@android: style / theme.name".

Distinguir temas por calificador de configuración :

 value/style.xml - > parent="@android:style/Theme.Light" value-v11/style.xml -> parent="@android:style/Theme.Holo.Light" value-v14/style.xml -> parent="@android:style/Theme.DeviceDefault.Light" 

http://code.google.com/p/android/issues/detail?id=22920

Yo tuve el mismo problema. En mi caso, había aplicado el parent = "android: Theme.Light" a values-V14 / styles.xml. Esto hizo que el control EditText se parezca a un control de android API 2.3.3 y siguientes. Pero el texto del mensaje de error era todo blanco y por lo tanto, no era visible. Después de un rasguño de cabeza me di cuenta de esto.

Cambia el parent = "android: Theme.Light" a parent = "android: Theme.Holo.Light.NoActionBar" (lo que sea el tema de Holo). Pero en la definición de EditText añada android:background="@android:drawable/edit_text"

Mi EditText se ve así

 <EditText android:id="@+id/password" style="@style/editTextNormal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/email" android:hint="@string/prompt_password" android:imeActionId="@+id/login" android:imeActionLabel="@string/action_sign_in_short" android:imeOptions="actionUnspecified" android:inputType="textPassword" android:maxLines="1" android:singleLine="true" android:background="@android:drawable/edit_text" /> 

Si desea cambiar el color del texto de la vista de texto de error, debe agregar este código en los archivos de tema.

Para v8:

 <item name="android:textColorSecondaryInverse">@android:color/secondary_text_light</item> 

Para v11:

 <item name="android:textColorPrimaryInverse">@android:color/primary_text_light</item> 
  • FindViewById devuelve null para EditText
  • Cómo eliminar todos los oyentes agregados con addTextChangedListener
  • Detener usuario multi-clic en edittext para abrir varios diálogos
  • Cómo dibujar rectángulo redondeado en la interfaz de usuario de Android?
  • Android - obtener la selección de texto de EditText
  • Establecer los dígitos EditText mediante programación
  • Android: EditText no rellenar ScrollView y RelativeLayout
  • Obtener los valores de EditText de ListView
  • Android EditText y el botón en la misma línea
  • Evitar que el usuario inserte más caracteres después de que se alcance el límite de tamaño en el cuadro EditarTexto.
  • Convertir cadena a doble en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.