Obtener valor de color mediante programación cuando se trata de una referencia (tema)

Considera esto:

Styles.xml

<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!

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) 
  • Android: cambia el ancho del menú de desbordamiento
  • Cambiar android Estilo de EditText del borde rectangular al subrayado
  • TextInputLayout: color diferente para la etiqueta de indicación cuando no está enfocado
  • Barra de acción oscura con Theme.AppCompat
  • No se puede establecer colorControlNormal y android: textColor en estilo
  • ¿Cuál es el color hexadecimal predeterminado de la barra de acción Holo.Light.DarkActionBar?
  • Tema XML de Android que hereda de dos temas principales?
  • ActionBarSherlock no admite cuadros de diálogo de alerta de luz-tema?
  • Cómo agregar borde a una ruleta sin afectar su menú emergente
  • El estilo de Android Holo Light cambia dependiendo del contexto elegido
  • PhoneGap 3.x Android - Tema de Popup / Dialog nativo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.