我正在尝试找到解决以下问题的方法.我工作的应用程序要求用户通过自定义UI构建器生成自定义UI(简单小部件的布局).因此,用户可以在画布上堆叠小部件(大多数是图像.但TextViews和EditText),移动它们等等.
UI必须存储在数据库中以备将来使用.因此,应该有一些加载和膨胀此UI的机制.这是主要问题.
UI必须存储在数据库中以备将来使用.因此,应该有一些加载和膨胀此UI的机制.这是主要问题.
我的第一个想法是依靠标准的Android布局机制.不幸的是,LayoutInflater使用XML编译成二进制形式.据我所知,在运行时将XML字符串编译成二进制表示是不可能的.
有没有人遇到过这样的问题?有什么建议?
解决方法
查看
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文档中所述.