Colorante desechable para api <21

¿Es posible hacer un tinte dibujable para api <21?

 

Funciona bien, pero solo para dispositivos con API21. ¿Alguna solución para dispositivos api inferiores o compatibilidad con AppCompat? No puedo encontrar nada

Use AppCompatImageView como AppCompatImageView :

  

Asegúrese de tener el último appcompat-v7 en appcompat-v7 su aplicación.

Ejemplo: compile 'com.android.support:appcompat-v7:25.0.0' en build.gradle su aplicación.

Puedes lograr eso usando el código fuente. Previamente tintado no era compatible con DrawableCompat . A partir de la biblioteca de soporte 22.1 puede hacerlo, pero debe hacerlo de esta manera:

 Drawable normalDrawable = getResources().getDrawable(R.drawable.drawable_to_tint); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.colorPrimaryLight)); 

¿No podría simplemente usar un ImageView para mostrar su Drawable? android:tint funciona bien en niveles API más antiguos.

  

Se ha realizado una pregunta similar antes aquí: https://stackoverflow.com/a/26533340/950427

El Tinte Drawable de Android solo es compatible con Android 5.0+ (API 21+). (Sí dice ” At the moment this is limited to coloring the action bar and some widgets. “).

Tematización

Cuando establece estos atributos, AppCompat propaga automáticamente sus valores a los atributos del marco en API 21+. Esto automáticamente colorea la barra de estado y la entrada de la tarea Descripción general (Recientes).

En las plataformas más antiguas, AppCompat emula la tonalidad del color siempre que sea posible. Por el momento, esto se limita a colorear la barra de acciones y algunos widgets.

Y

Widget Tinting

Cuando se ejecuta en dispositivos con Android 5.0, todos los widgets se tiñen con los atributos de tema de color que acabamos de mencionar. Hay dos características principales que permiten esto en Lollipop: el tinte dibujable y referenciando los atributos del tema (de la forma? Attr / foo) en dibujables.

AppCompat proporciona un comportamiento similar en versiones anteriores de Android para un subconjunto de widgets UI:

Todo lo que proporciona la barra de herramientas de AppCompat (modos de acción, etc.) EditText Spinner CheckBox RadioButton Switch (utilice el nuevo android.support.v7.widget.SwitchCompat) CheckedTextView No necesita hacer nada especial para que funcionen, solo use estos controles en sus diseños como de costumbre y AppCompat hará el rest (con algunas advertencias, consulte las preguntas frecuentes a continuación).

Fuentes:

http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

https://chris.banes.me/2014/10/17/appcompat-v21/

Ahora AppCompatImageView, AppCompatButton reemplazará el botón ImageView, para admitir el tinte en los dispositivos con menor API. Verifique el enlace para más detalles AppCompatImageView , AppCompatButton

Para teñir las imágenes, puede usar imageView.setColorFilter(int color) . Esto funciona desde la API 8 y funcionó para teñir mi imagen negra a un color que yo quería. Esto puede reemplazar a setImageTintList() pero solo usar android:tint también debería funcionar.

Use este NameSpace
xmlns: app = “http://schemas.android.com/apk/res-auto”

y después puedes reemplazar cada android: tint con la aplicación: tint. Esto me solucionó el problema.