Android - How to programmatically set the button style in a Linearlayout?

前端 未结 6 1714
无人共我
无人共我 2020-12-25 11:22

I am programmatically creating a LinearLayout for an AlertDialog with some buttons.

I WANT to do this:



        
相关标签:
6条回答
  • 2020-12-25 11:25

    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");
    
    0 讨论(0)
  • 2020-12-25 11:30

    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();
    
    0 讨论(0)
  • 2020-12-25 11:36

    This worked for me:

    int buttonStyle = R.style.your_button_style;
    Button button = new Button(new ContextThemeWrapper(context, buttonStyle), null, buttonStyle)
    
    0 讨论(0)
  • 2020-12-25 11:39

    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.

    0 讨论(0)
  • 2020-12-25 11:44

    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);
    
    0 讨论(0)
  • 2020-12-25 11:49

    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)

    0 讨论(0)
提交回复
热议问题