Puedes usar:
getResources().getColor(R.color.idname);
Consulte aquí cómo definir colores personalizados:
http://sree.cc/google/android/defining-custom-colors-using-xml-in-android
EDITAR (1):
dado getColor(int id)
que ahora está en desuso , se debe usar:
ContextCompat.getColor(context, R.color.your_color);
(agregado en la biblioteca de soporte 23)
EDITAR (2):
El siguiente código se puede usar tanto para pre y post Marshmallow (API 23)
ResourcesCompat.getColor(getResources(), R.color.your_color, null); //without theme
ResourcesCompat.getColor(getResources(), R.color.your_color, your_theme); //with theme
android.R.color.some_color
ejemplo:getResources().getColor(android.R.color.holo_blue_bright)
(al menos, en API 17)ContextCompat
yResourcesCompat
? Si no hay una diferencia práctica, sería menos confuso si eliminara uno de ellos de su respuesta.Basado en la nueva Biblioteca de soporte de Android (y esta actualización), ahora debe llamar a:
De acuerdo con la documentación :
Este método fue desaprobado en el nivel 23 de API . Utilice getColor (int, Theme) en su lugar
Es la misma solución para
getResources().getColorStateList(id)
:Tienes que cambiarlo así:
EDITAR 2019
Con respecto al
ThemeOverlay
uso del contexto de la vista más cercana:De esta manera, obtienes el color correcto según tu ThemeOverlay.
Especialmente necesario cuando en la misma actividad usas diferentes temas, como el tema oscuro / claro. Si desea comprender más sobre Temas y Estilos, se sugiere esta charla: Desarrollo de Temas con Estilo
fuente
Theme
se pueden pasar como nula, por lo que sólo llamargetColor(R.color.my_color, null)
si no está seguro de lo que pasa en el tema.Define tu color
valores / color.xml
Obtenga el color int y configúrelo
Ver también
fuente
getResources()
en unActivity
oFragment
?getResources()
fuera de una actividad o fragmento.getResources()
también está disponible como API pública en cualquier cosa que implemente Context y también en Views.Mejor enfoque
Como @sat responde, un buen enfoque para obtener color es
o use a continuación cuando no tenga acceso al
getResources()
método.Lo que hago es
¡Es más fácil de usar en cualquier lugar de su aplicación! Incluso en la clase Util o en cualquier clase donde no tenga Context o getResource ()
Problema (cuando no tienes contexto)
Cuando no tiene
Context
acceso , como un método en suUtil
clase.Asuma el siguiente método sin contexto.
Ahora pasará
Context
como parámetro en este método y usarágetResources().
Así que aquí hay una solución única de bonificación mediante la cual puede acceder a recursos desde cualquier lugar
Util class
. AgregueResources
a suApplication
clase o cree uno si no existe.Agregue un campo de nombre a su
manifest.xml
<application
etiqueta. (Si no se ha agregado ya)Ahora estás listo para irte. Usar
ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
en cualquier lugar de la aplicación.fuente
Actualicé para usar
ContextCompat.getColor(context, R.color.your_color);
pero a veces (en algunos dispositivos / versiones de Android. No estoy seguro) eso causa un NullPointerExcepiton.Entonces, para que funcione en todos los dispositivos / versiones, recurro a la antigua forma de hacerlo, en el caso de un puntero nulo.
fuente
Resources.getColor(int, Theme)
si puede? No debe atrapar excepciones de tiempo de ejecución.Para obtener más información sobre otro caso de uso que pueda ayudar a hacer surgir esta pregunta en los resultados de búsqueda, quería aplicar alfa a un color definido en mis recursos.
Usando la respuesta correcta de @ sat:
fuente
Encontré una manera más fácil que también funciona:
fuente
Acceder a los colores de una clase sin actividad puede ser difícil. Una de las alternativas que encontré fue usar
enum
.enum
Ofrece mucha flexibilidad.fuente
Método de trabajo más reciente:
fuente
Si su actual min. El nivel de API es 23, simplemente puede usar
getColor()
como lo estamos usando paragetString()
:Si desea un nivel inferior al API
23
, solo use esto:Pero tenga en cuenta que
getResources().getColor()
está en desuso en el nivel API23
. En ese caso, reemplace arriba con:ContextCompat : Ayuda para acceder a funciones en
Context
Si lo desea, puede restringir con lo
SDK_INT
siguiente:fuente
en actividad
en fragmento
por ejemplo:
fuente