自定义Android属性没有命名空间

时间:2013-01-11 07:24:28

标签: android

我正在制作自定义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资源,如果我这样做它会起作用,但我想确定它不可能,否则因为使用这种方式更简单。

1 个答案:

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