我需要从服务器动态加载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

08-16 15:12