Usted puede mirar en el origen del androide de themes.xml
, styles.xml
y colors.xml
. Lo único que notas de colors.xml es que no hay muchos colores definidos. Esto se debe a que la mayoría de los widgets se realizan a través de archivos de 9 parches.
del estilo del botón:
223 <style name="Widget.Button">
224 <item name="android:background">@android:drawable/btn_default</item>
225 <item name="android:focusable">true</item>
226 <item name="android:clickable">true</item>
227 <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
228 <item name="android:textColor">@android:color/primary_text_light</item>
229 <item name="android:gravity">center_vertical|center_horizontal</item>
230 </style>
Todo el trabajo hecho para cambiar los colores de fondo se realiza en el btn_default
Drawable
.
Fuente de btn_default.xml:
17 <selector xmlns:android="http://schemas.android.com/apk/res/android">
18 <item android:state_window_focused="false" android:state_enabled="true"
19 android:drawable="@drawable/btn_default_normal" />
20 <item android:state_window_focused="false" android:state_enabled="false"
21 android:drawable="@drawable/btn_default_normal_disable" />
22 <item android:state_pressed="true"
23 android:drawable="@drawable/btn_default_pressed" />
24 <item android:state_focused="true" android:state_enabled="true"
25 android:drawable="@drawable/btn_default_selected" />
26 <item android:state_enabled="true"
27 android:drawable="@drawable/btn_default_normal" />
28 <item android:state_focused="true"
29 android:drawable="@drawable/btn_default_normal_disable_focused" />
30 <item
31 android:drawable="@drawable/btn_default_normal_disable" />
32 </selector>
Cada uno de ellos es un archivo 9-parche. El problema es que esos son pngs. Los colores están integrados en los archivos de imagen y no están definidos en ningún lugar. Como habrás notado estas imágenes pueden ser reemplazadas y el aspecto cambia.
Lamentablemente, lo que desea no es posible. Tendrás que elegir un solo color para ir. Este color probablemente debería elegirse para encajar con el resto de su aplicación. Lo sentimos :(
esta es una buena pregunta y estoy teme que no haya solución. Realmente triste. – mad
Han pasado 5 años desde que se hizo esta pregunta ... la respuesta actual ahora se encuentra aquí: http://stackoverflow.com/questions/12375766/how-to-get-background- color-from-current-theme-programmatically (esa primera respuesta definitivamente funciona ...) – pbarranis