public
Last active

Android example of how to programmatically instantiate a View with a custom style.

  • Download Gist
AndroidManifest.xml
XML
1 2 3 4 5 6 7 8
<manifest ...>
...
<!-- Make sure your app (or individual activity) uses the
theme with the custom attribute defined. -->
<application android:theme="@style/AppTheme" ...>
...
</application>
</manifest>
MyActivity.java
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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);
}
}
res_values_styles_attrs.xml
XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<!-- 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>

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.