我正在制作自定义LayoutInflater.Factory,而在onCreateView()方法中,我想获取为当前视图指定的自定义属性。但是,我不想为此属性声明样式。如果在此View的xml属性中指定了此参数,我可以使用以下命令获取此参数:
attrs.getAttributeValue(null, attributeName);
如果在View的样式参数中指定它,我甚至可以得到它:
context.obtainStyledAttributes(attrs, new int[]{R.attr.custom_attribute);
但是,如果在主题中指定了此属性,则似乎无法获取此属性。任何帮助将不胜感激。
这是我的xml资源:
<style name="CustomTheme"
parent="android:Theme.DeviceDefault">
<item name="android:textViewStyle">@style/TextView.Custom</item>
</style>
<style name="TextView.Custom">
<item name="custom_attribute">"blabla"</item>
</style>
P.S。我知道我应该为自定义属性声明slyleable资源,如果我这样做它会起作用,但我想确定它不可能,否则因为使用这种方式更简单。
答案 0 :(得分:1)
原来你可以使用它来获取它:
TypedValue value = new TypedValue();
theme.resolveAttribute(android.R.attr.textViewStyle, value, true);
typedArray = theme.obtainStyledAttributes(value.resourceId, new int[] {R.attr.custom_attribute});