我有自定义对话框实现,它使用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而没有实际值。我检查了上下文和主题,上下文是活动,主题是正确的。
可能是什么问题?
答案 0 :(得分:0)
好的,问题是我的Base.Theme.AppCompat.Light主题被默认Base.Theme.AppCompat.Light覆盖。