如何动态创建材质按钮?

时间:2019-06-19 13:22:16

标签: android material-design

我正在尝试动态创建材质按钮。我添加了所有依赖关系和所有内容。如果我在XML文件中创建它,则可以完美运行,但是当我尝试动态创建它时,则会显示错误

创建我尝试过的材质按钮:

MaterialButton materialButton = new MaterialButton(context);
    LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, 
    LayoutParams.WRAP_CONTENT);
    myLayout.addView(materialButton, layoutParams);```

我的样式xml如下:

<style name="AppTheme" 
parent="Theme.MaterialComponents.Light.NoActionBar">

它给出运行时错误 “ java.lang.IllegalArgumentException:此组件上的样式要求您的应用程序主题为Theme.MaterialComponents(或后代)。”

找到答案

我提供了错误的上下文。我有视图控制器,并试图使海关视图扩展该控制器。我传递了BaseController的上下文(在正常情况下,它没有问题),这是问题上下文应该属于BaseActivity。

1 个答案:

答案 0 :(得分:0)

只需在Material Button的构造函数中传递样式即可。

    MaterialButton materialButton = new MaterialButton(this, null, R.attr.borderlessButtonStyle);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    linearHome.addView(materialButton, layoutParams);
    String buttonText = "Button Name";
    materialButton.setText(buttonText);
    materialButton.setTextColor(Color.RED);