我正在尝试动态创建材质按钮。我添加了所有依赖关系和所有内容。如果我在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。
答案 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);