El Resources.getColor(int id)
método ha quedado en desuso.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
¿Qué tengo que hacer?
El Resources.getColor(int id)
método ha quedado en desuso.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
¿Qué tengo que hacer?
Respuestas:
A partir de la Biblioteca de soporte de Android 23, se ha agregado
un nuevo método getColor ()
ContextCompat
.Su descripción del JavaDoc oficial:
Entonces, solo llame :
Puede consultar el
ContextCompat.getColor()
código fuente en GitHub .fuente
tl; dr:
Explicación:
Deberá usar ContextCompat.getColor () , que forma parte de la Biblioteca de Support V4 (funcionará para todas las API anteriores).
Si aún no usa la Biblioteca de soporte, deberá agregar la siguiente línea a la
dependencies
matriz dentro de su aplicaciónbuild.gradle
(nota: es opcional si ya usa la biblioteca appcompat (V7) ):Si le interesan los temas, la documentación especifica que:
fuente
M
, el color devuelto tendrá el estilo del tema del Contexto especificado "ContextCompat
clase proviene de SupportV4. AppcompatV7 también funciona, ya que se basa en SupportV4. Como dicen en la documentación de la biblioteca de apoyo ,This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure you include the v4 Support Library as part of this library's classpath.
. Por lo tanto, tiene sentido no ponerAppcompatV7
la respuesta.No quiero incluir la biblioteca de soporte solo para getColor , así que estoy usando algo como
Supongo que el código debería funcionar bien, y lo obsoleto
getColor
no puede desaparecer de la API <23.Y esto es lo que estoy usando en Kotlin:
fuente
En Android Marshmallow, muchos métodos están en desuso.
Por ejemplo, para usar el color
También para obtener un uso dibujable
fuente
Para todos los usuarios de Kotlin:
fuente
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. La variable "it" podría ser cualquier cosa, pero debe ser un Contexto .it
es en este caso elcontext
, ya que usocontext?.let {
para verificar si elcontext
no es nulo. La funcióngetColor()
solo acepta un contexto no nulo. Lea más aquí sobrelet
y cómo usarlo: kotlinlang.org/docs/reference/scope-functions.html#letEn su recicladorVer en Kotlin
fuente
Utilice el
getColor(Resources, int, Theme)
método de laResourcesCompat
Biblioteca de soporte de Android.Creo que refleja mejor tu pregunta que la
getColor(Context, int)
de laContextCompat
que preguntasResources
. Antes del nivel 23 de API, el tema no se aplicará y el método llamarágetColor(int)
pero no tendrá la advertencia en desuso. El tema también puede sernull
.fuente
Si no necesariamente necesita los recursos, use
parseColor(String)
:Color.parseColor("#cc0066")
fuente
Si su actual min. El nivel de API es 23, simplemente puede usarlo
getColor()
como lo estamos usando para obtener recursos de cadena algetString()
:Puede restringir los niveles de API por debajo de 23:
pero para que sea simple, puede hacer lo siguiente como respuesta aceptada:
De los recursos .
Desde ContextCompat AndroidX .
De ContextCompat Support
fuente
Yo también me frustré. Mi necesidad era muy directa. Todo lo que quería era el color ARGB de los recursos, así que escribí un método estático simple.
fuente