在运行时创建,存储和扩展自定义布局

时间:2011-04-05 14:48:07

标签: android android-layout android-widget android-xml

我正在尝试为以下问题找到解决方案。我工作的应用程序要求用户通过自定义UI构建器生成自定义UI(简单小部件的布局)。因此,用户可以在画布上堆叠小部件(图像,主要是。但TextViews和EditText),移动它们等等。 UI必须存储在数据库中以备将来使用。因此,应该有一些加载和膨胀此UI的机制。这是主要问题。

我的第一个想法是依靠标准的Android布局机制。不幸的是,LayoutInflater使用XML编译成二进制形式。据我所知,在运行时不可能将XML字符串编译成二进制表示。

是否有人遇到过这样的问题?有什么建议?

1 个答案:

答案 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文档中所述。