10/17/2013 - 5:50 PM


<!-- The convention is to put the <style> elements below
     in res/values/styles.xml and <declare-styleable> in
     res/values/attrs.xml. -->

    <!-- First declare a custom theme attribute that'll
         reference a style resource. -->
    <declare-styleable name="AppTheme">
        <attr name="myButtonStyle" format="reference" />

    <!-- Provide a style resource as the value for the
         theme attribute. As a side note, if you want to
         change the default button style, you can instead
         override the android:buttonStyle attribute. -->
    <style name="AppTheme" parent="android:Theme.Holo">
        <item name="myButtonStyle">@style/MyButton</item>

    <!-- Define the custom button style itself. Make sure
         to inherit from an existing button style. -->
    <style name="MyButton" parent="android:Widget.Holo.Button">
        <item name="android:textColor">#f00</item>

public class MyActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {

        // Pass in the theme attribute that'll resolve to the
        // desired button style resource. The current theme
        // must have a value set for this attribute.
        Button myButton = new Button(this, null, R.attr.myButtonStyle);
        myButton.setText("Hello world");

        ViewGroup containerView = (ViewGroup) findViewById(R.id.container);
<manifest ...>
    <!-- Make sure your app (or individual activity) uses the
         theme with the custom attribute defined. -->
    <application android:theme="@style/AppTheme" ...>