我需要从服务器动态加载XML布局。LayoutFlater具有使用XmlPullParser的充气方法。我试过了,但没用。
查看android源代码,发现那些膨胀的方法是用xmlresourceparser调用的。android使用的实现是xmlblock.parser,但这不是一个公共api。
我可以使用xmlresourceparser公共实现吗?
最佳答案
您可以使用Android documentation中描述的传统XmlPullParser
:
InputStream yourRemoteLayout = ...;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(yourRemoteLayout, "someEncoding");
AttributeSet attributes = Xml.asAttributeSet(parser);
有关详细信息,请参阅XmlPullParser documentation中的说明。
编辑:来自LayoutInflater#inflate()文档:
Important For performance reasons, view inflation relies heavily on pre-processing of XML files that is done at build time. Therefore, it is not currently possible to use LayoutInflater with an XmlPullParser over a plain XML file at runtime.
我想,如果android本身只依赖预处理的资源,那么您可能应该自己实现
LayoutInflater.Factory2
。