theme getcolor color android deprecated android-resources android-color

android - theme - getResources(). getColor() está en desuso



getcolor int)'' is deprecated as of api 23 android 6.0 marshmallow (4)

Descubrí que el útil getResources (). GetColor (R.color.color_name) está en desuso.

No está en desuso en el nivel 21 de API, según la documentación .

Está en desuso en la Vista previa del desarrollador M. Sin embargo, el método de reemplazo (un getColor() dos parámetros que toma el ID del recurso de color y un objeto Resources.Theme ) solo está disponible en la Vista previa del desarrollador M.

Por lo tanto, en este momento, continúe usando el método getColor() parámetro getColor() . Más adelante este año, considere usar el método getColor() dos parámetros en dispositivos Android M, getColor() método getColor() parámetro único en desuso en dispositivos más antiguos.

Esta pregunta ya tiene una respuesta aquí:

Usando: buildToolsVersion "22.0.1" , targetSdkVersion 22 en mi archivo gradle.

Descubrí que el útil getResources().getColor(R.color.color_name) está en desuso.

¿Qué debo usar en su lugar?


Bueno, está en desuso en Android M, por lo que debe hacer una excepción para Android M y versiones inferiores. Simplemente agregue el tema actual en la función getColor . Puede obtener el tema actual con getTheme() .

Esto hará el truco en fragmentos, puede reemplazar getActivity() con getBaseContext() , yourContext , etc., que contienen su contexto actual

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme())); }else { yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white)); }

* ps: el color está en desuso en M, pero el dibujable está en desuso en L


Debe usar ContextCompat.getColor (), que forma parte de la Biblioteca de Support V4 (por lo que funcionará para todas las API anteriores).

ContextCompat.getColor(context, R.color.my_color)

Como se especifica en la documentación, "Comenzando en M, el color devuelto tendrá un estilo para el tema del Contexto especificado". Así que no hay que preocuparse por eso.

Puede agregar la biblioteca Support V4 agregando lo siguiente a la matriz de dependencias dentro de su aplicación build.gradle:

compile ''com.android.support:support-v4:23.0.1''


Parece que el mejor enfoque es usar:

ContextCompat.getColor(context, R.color.color_name)

p.ej:

yourView.setBackgroundColor(ContextCompat.getColor(applicationContext, R.color.colorAccent))

Esto elegirá el método de dos parámetros Marshmallow o el método pre-Marshmallow de manera apropiada.