无法使用Defstyleattr找到当前主题的样式



我有一个自定义视图,该视图也使用了自己的 defStyleAttr,即

当前主题中的一个属性包含对风格资源的引用,该样式资源为视图提供默认值。

在布局文件中声明此视图并在Android Studio 2.2.3中单击预览时,我会收到以下错误消息:

缺少样式。是否为此布局选择了正确的主题?使用布局上方的主题组合框选择其他布局,或修复主题样式的参考。在当前主题中找到" mycustomstyleattr"样式

我的视图构造函数是:

public MyCustomLayout(Context context) {
    this(context, null);
}
public MyCustomLayout(Context context, AttributeSet attrs) {
    this(context, attrs, R.attr.myCustomStyleAttr);
}
public MyCustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(attrs, defStyleAttr);
}

我知道有很多问题,因此缺少样式。错误,但是所有答案对我有用,它们主要与AppCompat样式有关,因此我想分享我的解决方案。

以下对我有用:

public MyCustomLayout(Context context) {
    this(context, null);
}
public MyCustomLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(attrs, isInEditMode() ? 0 : R.attr.myCustomStyleAttr);
}
public MyCustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(attrs, defStyleAttr);
}

最新更新