使用自定义属性创建默认样式

所以这是我的问题:我创建了一个自定义组件,它扩展了Button这个按钮有一个名为testAttr属性。

    

我想为这个组件创建一个默认样式,所以我添加了这个:

     @style/test  

问题是我想要同时使用android属性和我自己的属性,这是行不通的:

  #FF0000 testText  

我在自定义组件中设置默认样式,如下所示:

 public myButton(final Context context) { this(context, null); } public myButton(final Context context, final AttributeSet attrs) { this(context, attrs, R.styleable.TestTheme_testStyle); } public myButton(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); final TypedArray array = context.obtainStyledAttributes( attrs, R.styleable.TestButton, defStyle, R.style.testDefault); final String s = array.getString(R.styleable.TestButton_testAttr); setText(s); array.recycle(); } 

当然,我在清单中设置主题

          

由于某种原因,它总是回退到默认样式,并且永远不会设置android属性。 我在这里错过了一些东西吗?

那么,在问问题之前我应该​​看起来更好……

find解决方案:

取而代之:

 public myButton(final Context context, final AttributeSet attrs) { this(context, attrs, R.styleable.TestTheme_testStyle); } 

有了这个:

 public myButton(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.testStyle); }