android - 在运行时创建、存储和扩充自定义布局

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

我正在尝试为以下问题找到解决方案。我处理的应用程序需要用户能够通过自定义 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/

相关文章:

android - AppWidgetHost 不更新小部件

java - 如何从EditText中移除 '$',修改float,并把$放回去

android - 创建 ListView 的共享首选项

java - 如何使用 Achartengine 库在 Android 中使用 fragment 内的图表?

带标题的 Android ListView

android - 使用 Switch 按钮切换 dayNight 主题

android - Androgurus 的 2 个基本问题......有人可以指导我吗

android - 根据 map View 中的最小/最大纬度/经度计算 zoomToSpan() 度数

java和android keystore 路径问题

android - LinearLayout 中的 Fragment 改变了它的高度