2

我是 android 开发的新手,我将开发一个 android 应用程序。在这个应用程序中,我想动态生成 xml 布局。登录到应用程序后,服务器将发送带有控件描述的 xml 模板,包括不同的属性描述(每个控件的验证、最大长度、控件的大小等),这意味着不会有预定义的 xml 布局。

我的计划是,从下载的 xml 模板中,我将创建一个 xml 布局并将该 xml 存储在 sqlite 数据库中。当用户单击记录时,我想向用户显示这个动态创建的表单。

是否可以修改 xml 布局(如设置 innerxml)?

4

6 回答 6

2

你可以尝试这样的事情:

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(myXmlPullParser, null);

setContentView(myView);
于 2012-06-26T07:29:42.500 回答
2

基于查看文档

重要出于性能原因,视图膨胀在很大程度上依赖于在构建时完成的 XML 文件的预处理。因此,目前无法在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater。

如果布局不在布局 res 目录中,则不能膨胀布局。

于 2012-06-26T07:37:21.073 回答
0

有可能。采用只有线性布局的 xml 布局,并在 onCreate 中访问具有 id 的布局并以编程方式创建所有视图并将作为子视图添加到线性布局中,然后将该 xml 布局设置为 setContentView。稍后您想在创建视图后添加更多视图,您可以运行 UI 线程并添加视图。

于 2012-06-26T07:30:33.510 回答
0

我认为与其动态创建 xml,不如考虑以编程方式创建所需的视图,如果它是高级视图,您应该按照 TheWAlkingCube 的建议进行操作,动态扩展 xml 视图。

于 2012-06-26T08:11:00.657 回答
0

Android 不完全支持您的工作方式,但您可以动态构建自己的布局。

创建您自己的TemplateBuilder -class。此类将从您的服务器检索布局文件(并可能将其保存在您的数据库中)。可以读取 XML 文件,并且可以在运行时添加每个定义的项目。如前所述,这不是您应该在 Android 中工作的传统方式,但它将是您的最佳选择。

如果您有某些 ViewGroup 或布局将更频繁地在布局中使用,您可以将它们定义为您的res文件夹中的 XML 文件,并在需要时对其进行扩充。创建预定义的布局块,您可以随时膨胀并逐字构建自定义布局。

有关在运行时添加视图的示例,您可以访问以下链接: http ://www.dreamincode.net/forums/topic/130521-android-part-iii-dynamic-layouts/

于 2012-06-26T08:11:30.983 回答
0

如果您坚持这样做,则必须在程序中解析收到的 xml 文件,并根据收到的文件中的请求方式以编程方式添加 xml 布局的每个视图

于 2013-08-14T09:03:09.973 回答