versiones pie oreo developer descargar android

android - pie - Tinte dibujable para api<21



android pie (10)

¿Es posible hacer que el tinte dibujable funcione 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 solo para dispositivos con API21. ¿Alguna solución para dispositivos con una API inferior o compatibilidad con AppCompat? No puedo encontrar nada.


¿No podría simplemente usar un ImageView para mostrar su Drawable? android:tint funciona bien en niveles de API anteriores.

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



Esto hará lo que desee y debería funcionar en todas las versiones de Android de la biblioteca de soporte:

@JvmStatic fun getTintedDrawable(inputDrawable: Drawable, @ColorInt color: Int): Drawable { val wrapDrawable = DrawableCompat.wrap(inputDrawable.mutate()) DrawableCompat.setTint(wrapDrawable, color) DrawableCompat.setTintMode(wrapDrawable, Mode.SRC_IN) return wrapDrawable }


Llego un poco tarde, pero he aquí cómo hacerlo.

val textInput = EditText(context) val drawable = ContextCompat.getDrawable(context, R.drawable.your_drawable) drawable?.let { myDrawable -> DrawableCompat.setTint(myDrawable, ContextCompat.getColor(context, R.color.your_color)) textInput.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, myDrawable, null) }


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


Puede lograr eso usando el código fuente. Anteriormente, el tinte 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));


Si alguien quiere crear un nuevo dibujable (tin1, tint2 ..) intente esto

<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/your_image" android:tint="@color/tint_color"> </bitmap>


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

Android Drawable Tinting solo es compatible con Android 5.0+ (API 21+). (Dice " At the moment this is limited to coloring the action bar and some widgets. ").

Temática

...

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

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

Y

Tintado de widgets

Cuando se ejecuta en dispositivos con Android 5.0, todos los widgets se tiñen usando 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 referenciando los atributos del tema (del formulario? Attr / foo) en los elementos dibujables.

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

Todo lo que proporciona la barra de herramientas de AppCompat (modos de acción, etc.) EditText Spinner CheckBox RadioButton Switch (use el nuevo android.support.v7.widget.SwitchCompat) CheckedTextView No necesita hacer nada especial para que estos 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/


Use este espacio de nombres
xmlns: app = "http://schemas.android.com/apk/res-auto"

y después de que pueda reemplazar cada android: tint con app: tint. Esto solucionó el problema para mí.


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úrese de tener el último appcompat-v7 en el build.gradle su aplicación.

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