I am programmatically creating a LinearLayout for an AlertDialog with some buttons.
I WANT to do this:
This is the only answer that actually delivered what I was looking for: http://belencruz.com/2013/04/set-styles-programmatically-in-android/
Essentially, create a layout XML file that simply has a <Button/>
element with the style you want. Then, inflate it programmatically and just customize the button text.
Something along the lines of:
<?xml version="1.0" encoding="utf-8"?>
<Button style="@style/your_custom_style_here"/>
In code:
Button button = (Button)getLayoutInflater().inflate(R.layout.your_custom_button_layout_file, null);
button.setText("Your Text");
The Paris library from AirBnB is perfect for this, allowing for programmatic configuration like so:
Paris.styleBuilder(textView)
.add(R.style.MyGreenTextView)
.textSizeRes(R.dimen.my_text_size_small)
.apply();
This worked for me:
int buttonStyle = R.style.your_button_style;
Button button = new Button(new ContextThemeWrapper(context, buttonStyle), null, buttonStyle)
In my case style was not loaded at all when I pass them into Button
constructor.
It seems that was because I was using the material design view. Here what solved my case:
val themeWrapper = ContextThemeWrapper(
context,
R.style.AppTheme_ButtonPrimary // my button style
)
val button = MaterialButton(themeWrapper)
Please note that MaterialButton
was created instead of Button
.
I found this solution at: How to specify a style for a view programmatically in Android.
Hope I'm not too late to join the party :)
Well, Styles can be applied to a View
at initialization phase. For example:
LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar);
Instead of waqaslams
LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar);
(which is, judging by the comments, API dependable) I have also read ridoys answer from here [ Android Button Styling Programatically ] which is
transferBtn.setBackgroundResource(R.layout.buttonstyle);
(exposing the above answers because one of these may also work for you, depending of API version you use),
But this is what worked for me (mind the change from "layout" to "drawable"):
Button b = new Button(this);
b.setBackgroundResource(R.drawable.button_custom_green);
(answer from [How to programmatically setting style attribute in a view)