Obtener valor de color mediante programación cuando se trata de una referencia (tema)
Considera esto:
Styles.xml
- No hay barra de título para Android
- Cómo dar estilo a ActionaBar Tab texto en Android?
- El cambio de tema no funciona en <4.0 como debería
- Cambiar el color de desplazamiento excesivo de ViewPager
- Mezcla de holo light y holo dark EditarTexto en tema
<style name="BlueTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="theme_color">@color/theme_color_blue</item> </style>
Attrs.xml
<attr name="theme_color" format="reference" />
Color.xml
<color name="theme_color_blue">#ff0071d3</color>
Así que el color del tema es referenciado por el tema. ¿Cómo puedo obtener el theme_color (referencia) de forma programática? Normalmente utilizaría getResources().getColor()
pero no en este caso porque se hace referencia!
- Estilos comunes para v10 y v11 +?
- Android: Diálogo de alerta con cuadro de diálogo personalizado y botón neutral
- No se puede encontrar Theme.AppCompat.Light para el nuevo soporte para Android ActionBar
- Herencia de estilo de Widget extendido
- Quitar sombra de barra de acción mediante programación
- Error de atributo al cambiar a Diseño de material
- ActionBarSherlock - Estilo contiene clave con entrada incorrecta
- Cambiar el color de subtítulos de la barra de acción de Android
Esto debería hacer el trabajo:
TypedValue typedValue = new TypedValue(); Theme theme = context.getTheme(); theme.resolveAttribute(R.attr.theme_color, typedValue, true); @ColorInt int color = typedValue.data;
También asegúrese de aplicar el tema a su actividad antes de llamar a este código. Utilice:
android:theme="@style/Theme.BlueTheme"
En su manifiesto o llamada (antes de llamar a setContentView (int)):
setTheme(R.style.Theme_BlueTheme) in onCreate()
Lo he probado con sus valores y funcionó perfectamente.
Esto funcionó para mí:
int[] attrs = {R.attr.my_attribute}; TypedArray ta = context.obtainStyledAttributes(attrs); int color = ta.getResourceId(0, android.R.color.black); ta.recycle();
Si usted quiere conseguir la hexstring fuera de ella:
Integer.toHexString(color)
- ¿Es una mala idea usar printStackTrace () en Android Exceptions?
- Patrón de WeakReference / AsyncTask en android