Teñido de dibujo para api <21

¿Es posible realizar trabajos de tintado para api <21?

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_calendar" android:tint="@color/primary" /> 

Funciona bien, pero sólo para dispositivos con API21. ¿Alguna solución para dispositivos api inferiores o compatibilidad con AppCompat? No se puede encontrar nada.

Utilice AppCompatImageView la AppCompatImageView manera:

 <android.support.v7.widget.AppCompatImageView android:id="@+id/my_appcompat_imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_image" android:tint="#636363" /> 

Asegúrate de tener el último appcompat-v7 en el build.gradle tu aplicación.

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

Una pregunta similar se ha hecho antes aquí: https://stackoverflow.com/a/26533340/950427

El tintado de Drawable de Android es compatible con Android 5.0+ (API 21+). (Se dice " At the moment this is limited to coloring the action bar and some widgets. ").

Teoría

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

En plataformas más antiguas, AppCompat emula el tema del color siempre que sea posible. En este momento se limita a colorear la barra de acción y algunos widgets.

Y

Teñido de widget

Cuando se ejecuta en dispositivos con Android 5.0, todos los widgets se tiñen utilizando los atributos de tema de color de los que acabamos de hablar. Hay dos características principales que permiten esto en Lollipop: tintado dibujable, y haciendo referencia a los atributos del tema (de la forma? Attr / foo) en drawables.

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

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 hacer que funcionen, solo use estos controles en Sus diseños como de costumbre y AppCompat hará el resto (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/

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

 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_calendar" android:tint="@color/primary" /> 

Ahora AppCompatImageView, AppCompatButton reemplazará ImageView, Button para apoyar tinte en dispositivos con API inferior. Revise el enlace para obtener más detalles AppCompatImageView , AppCompatButton

Usted puede lograr que el uso de código fuente. Anteriormente el tintado no era compatible con DrawableCompat . A partir de la biblioteca de soporte 22.1 puedes hacerlo, pero necesitas 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)); 

Para el tintado de imágenes que podría utilizar imageView.setColorFilter(int color) . Esto funciona de API 8 y trabajó para teñir mi imagen negra a un color que yo quería. Esto puede reemplazar setImageTintList() pero sólo con android:tint también debería funcionar.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.