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.