jaydm
10/17/2013 - 5:50 PM

AndroidManifest.xml

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

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

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

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

</resources>
public class MyActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(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);
        containerView.addView(myButton);
    }
}
<manifest ...>
    ...
    <!-- Make sure your app (or individual activity) uses the
         theme with the custom attribute defined. -->
    <application android:theme="@style/AppTheme" ...>
        ...
    </application>
</manifest>