我正在尝试为以下问题找到解决方案。我处理的应用程序需要用户能够通过自定义 UI 构建器生成自定义 UI(简单小部件的布局)。因此,用户可以在 Canvas 上堆叠小部件(主要是图像。但也包括 TextView 和 EditText),移动它们等等。 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
文档中所述。
关于android - 在运行时创建、存储和扩充自定义布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553813/