Estilo EditarTexto personalizado con appcompat v7

Creé una vista personalizada extendiendo EditText y especificó un estilo de atributo para cambiar el color de tinte de fondo.

public class CustomEditText extends EditText { public CustomEditText (Context context) { this(context, null); } public CustomEditText (Context context, AttributeSet attrs) { this(context, attrs, R.attr.customEditTextStyle); } public CustomEditText (Context context, AttributeSet attrs, int defStyle) { super(context, attrs, R.attr.customEditTextStyle); } // Some other code... } 

Luego agregué un estilo de atributo:

 <resources> <attr name="customEditTextStyle" format="reference" /> <resources> 

Estoy utilizando Theme.AppCompat en mi aplicación. Ya estoy sobreescribiendo colorPrimary, colorPrimaryDark y colorAccent.

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/blue</item> <item name="colorPrimaryDark">@color/blue_dark</item> <item name="colorAccent">@color/blue_accent</item> <item name="customEditTextStyle">@style/CustomEditText</item> </style> <style name="CustomEditText" parent="Widget.AppCompat.EditText"> <item name="colorPrimary">@color/blue</item> <item name="colorPrimaryDark">@color/blue_dark</item> <item name="colorAccent">@color/blue_accent</item> </style> 

Los colores de fondo editText están funcionando bien, sin embargo, no puedo hacer lo mismo con el editText personalizado.

He intentado usar este código pero cambia el estado total, tal que todos los estados utilizan el mismo color. ( Https://stackoverflow.com/a/28433337 )

 editText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP); 

¿Hay una manera de aplicar el estilo AppCompat en la vista personalizada? ¿Es este problema de AppCompat o hice algo incorrecto en mi CustomEditText? Cualquier idea sería muy apreciada. ¡Gracias!

A partir de api 21 debe subclase AppCompatEdit texto. Lo mismo ocurre con todos los widgets compatibles. Utilice AppCompat * para obtener tinte y otras funciones de respaldo.

Solucionado el problema extendiendo android.support.v7.internal.widget.TintEditText.

AppCompat no admite el matiz de widget para las vistas personalizadas.

  • Java.lang.IllegalStateException: Necesita utilizar un tema Theme.AppCompat (o descendente) con esta actividad. titanio
  • Excepción java.lang.NoClassDefFoundError: android.support.v7.appcompat.R $ styleable
  • Diferentes estilos de colorControlActivated en Android
  • Ejecución de Gradle prueba con Robolectric y AppCompat resultados en NullPointerException
  • Barra de herramientas de Android flecha posterior con icono como WhatsApp
  • Cuándo utilizar AppCompatView vs una vista normal de Android
  • Cajón de navegación de derecha a izquierda con v7 ActionBarDrawerToggle
  • Uso de la barra de herramientas AppCompat con FrameLayout
  • Cómo personalizar el campo EditText en android utilizando AppCompat v7: 21
  • ¿Cuál es el uso de un ... -v21.xml?
  • La altura de la barra de herramientas en Lollipop es demasiado grande
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.