在Android中构建/使用运行时生成的布局XML

时间:2009-12-21 19:30:04

标签: xml android layout

我目前正在开发一个项目,该项目要求我使用XML文档在Android设备上呈现表单。必须在运行时获取并显示表单。我想知道是否有办法标记表单XML,使用XSLT将其转换为Android布局XML,然后让设备呈现它。

3 个答案:

答案 0 :(得分:12)

不幸的是你不能只是克隆LayoutInflater或使用其他这样的技巧来做到这一点 - 布局膨胀完全依赖于采用AttributeSet参数的视图构造函数,它完全依赖于Context.obtainStyledAttributes方法,它本身就是完全依赖于预先处理的二进制XML文件,以便能够进行合理有效的属性解析。

您可以探索的另一种方法是在服务器上使用aapt工具(或者更可能是它的黑客版本),将您生成的布局编译到适当的数据中。遗憾的是,我们目前没有办法从原始二进制blob构建XmlPullParser(它必须从AssetManager获取此blob),因此使用此方法在客户端和服务器上都需要做大量的工作。我怀疑一个人可以拿出一些非常整洁的东西,但这将是很多工作。

答案 1 :(得分:6)

Android仅包含一种内置方式来“膨胀”存储为APK文件中布局资源的布局XML。如果您想从其他来源“膨胀”类似(或不同)的XML,您必须自己实现,可能是通过从LayoutInflater类克隆一些逻辑。

答案 2 :(得分:0)

LayoutInflater.inflate方法将XmlPullParser作为参数,因此您需要做的就是将动态创建的XML加载到PullParser中并将其传递给inflater。