主题中未解析自定义属性

时间:2015-07-22 10:10:59

标签: android

我有自定义对话框实现,它使用Holo和Material版本的不同主题。主题由自定义属性设置:

<attr name="klAlertDialogTheme" format="reference"/>

此属性用于自定义主题:

<style name="Base.Theme.AppCompat.Light" parent="Base.V21.Theme.AppCompat.Light">       
    <item name="klAlertDialogTheme">@style/Theme.KLAlertDialog.Material.Light.Brand</item>
</style>

然后我尝试获取属性引用的值:

protected KLAlertDialog(final Context context) {
    this(context, resolveDialogTheme(context, 0));
}

static int resolveDialogTheme(final Context context, final int resId) {
    if (resId >= 0x01000000) {
        return resId;
    } else {
        final TypedValue outValue = new TypedValue();
        context.getTheme().resolveAttribute(R.attr.klAlertDialogTheme,
                outValue, true);
        return outValue.resourceId;
    }
}

但有时属性未解析并返回空outValue而没有实际值。我检查了上下文和主题,上下文是活动,主题是正确的。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

好的,问题是我的Base.Theme.AppCompat.Light主题被默认Base.Theme.AppCompat.Light覆盖。