我从ToggleButton延伸,想要设定我的风格。当我在像style="@style/Button.Filter.Text"
这样的xml中设置样式时,一切正常
但是当我在自定义ToggleButton中的构造函数中以编程方式设置样式super(context, attrs, R.style.Button_Filter_Text);
时,我的按钮的样式与普通TextView一样(可能没有样式)
答案 0 :(得分:1)
您无法以编程方式设置样式,好的方法是在xml中设置样式然后对其进行充气。请查看this answer确认和second one,其中介绍了更多方法。 并one more example。
答案 1 :(得分:1)
三参数构造函数中的参数int defStyleAttr
可能无法使用自定义样式。来自Android文档:
defStyleAttr - 当前主题中的一个属性,其中包含对为其提供默认值的样式资源的引用 视图。可以为0以查找默认值。
要解决此问题,请使用以下方法:
ContextThemeWrapper wrappedContext = new ContextThemeWrapper(yourContext, R.style.Button_Filter_Text);
View view = new View(wrappedContext, null, 0);
或者如果你只支持LOLLIPOP及更高版本,那么有一个带有4个参数的use构造函数:
View (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
defStyleAttr
应为0且defStyleRes
为您的样式ID