这是我的故事:

我有一个自定义ViewGroup,我想使用预定义的样式从代码中创建它,到目前为止,我的方法是从style.xml元素中创建AttributeSet对象,就像这样(警告,请注意前面的复制粘贴代码):

    XmlPullParser parser = getResources().getXml(R.style.my_stylez);
    AttributeSet attributes = Xml.asAttributeSet(parser);

但是这样做时,我会遇到一些疯狂的错误:
“..android.content.res.Resources $ NotFoundException:资源ID#0x7f090002类型#0x12无效”

我知道我在这里可能会遗漏一些非常明显的东西(或者是我?),如果你们中的任何一个可以为我指明正确的方向,我将不胜感激。

谢谢

最佳答案

您需要从XML文件的资源标识符开始,最好在res/xml中。然后,您可以通过首先创建XmlPullParser来获得AttributeSet:

Resources res = context.getResources();
XmlPullParser parser = res.getXml(R.xml.some_xml_file);

// Seek to the first tag.
int type = 0;
while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) {
    type = parser.next();
}

// Wrap as an attribute set.
AttributeSet attrs = Xml.asAttributeSet(parser);

您可以在AOSP中的可绘制CTS测试中找到此示例。

10-08 17:52