【问题标题】:Failed to find style in current theme for custom view with defStyleAttr无法在当前主题中使用 defStyleAttr 为自定义视图找到样式
【发布时间】:2017-02-27 16:58:13
【问题描述】:

我有一个自定义视图,它也使用自己的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);
}

我知道有很多关于 SO 的问题与 Missing styles. 错误但是没有一个答案对我有用,而且它们大多与 AppCompat 样式有关,所以我想分享我的解决方案。

【问题讨论】:

    标签: android android-widget android-custom-attributes


    【解决方案1】:

    以下内容对我有用:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2011-10-21
      • 2016-12-19
      • 1970-01-01
      • 2019-01-31
      相关资源
      最近更新 更多