从ToggleButton以编程方式设置的自定义视图的样式

时间:2015-04-30 11:55:16

标签: android android-custom-view android-styles

我从ToggleButton延伸,想要设定我的风格。当我在像style="@style/Button.Filter.Text"这样的xml中设置样式时,一切正常 但是当我在自定义ToggleButton中的构造函数中以编程方式设置样式super(context, attrs, R.style.Button_Filter_Text);时,我的按钮的样式与普通TextView一样(可能没有样式)

2 个答案:

答案 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