如何从style.xml创建AttributeSet?

jua*_*awa 17 android android-widget android-layout

这是我的故事:

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

    XmlPullParser parser = getResources().getXml(R.style.my_stylez);
    AttributeSet attributes = Xml.asAttributeSet(parser);
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

ala*_*anv 7

您需要从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);
Run Code Online (Sandbox Code Playgroud)

您可以在AOSP的可绘制CTS测试中找到相关示例.


Ski*_*kip 0

看起来您的 XML(R.style.my_stylez) 不存在,或者您的 R 文件已过时。