我正在尝试为以下问题找到解决方案。我工作的应用程序要求用户通过自定义UI构建器生成自定义UI(简单小部件的布局)。因此,用户可以在画布上堆叠小部件(图像,主要是。但TextViews和EditText),移动它们等等。 UI必须存储在数据库中以备将来使用。因此,应该有一些加载和膨胀此UI的机制。这是主要问题。
我的第一个想法是依靠标准的Android布局机制。不幸的是,LayoutInflater使用XML编译成二进制形式。据我所知,在运行时不可能将XML字符串编译成二进制表示。
是否有人遇到过这样的问题?有什么建议?
答案 0 :(得分:2)
查看LayoutInflater的膨胀方法。您实际上可以将任何XmlPullParser
作为其来源使用,而后者又可以在任何Reader
的情况下构建。
换句话说,您几乎可以使用任何字符流作为xml来源进行充气。
XmlPullParser文档的开头为您提供了创建拉解析器的基本大纲:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader("<foo>Hello World!</foo>"));
更新 - 这不会起作用,如LayoutInflater
文档中所述。