如何动态修改Android布局XML

时间:2012-06-26 07:21:52

标签: android android-layout

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

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

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

6 个答案:

答案 0 :(得分:2)

你可以尝试类似的东西:

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

setContentView(myView);

答案 1 :(得分:1)

基于View documentation

  

重要出于性能原因,查看通胀严重依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时对普通XML文件使用带有XmlPullParser的LayoutInflater。

如果布局不在布局res目录中,则无法扩充布局。

答案 2 :(得分:0)

有可能。只使用线性布局获取一个xml布局,并在onCreate中访问带有id的布局并以编程方式创建所有视图,并将其添加到线性布局作为子视图,然后将该xml布局设置为setContentView。 稍后你想在View Created之后添加更多视图,你可以运行UI线程并添加视图。

答案 3 :(得分:0)

我认为不是动态创建xml,而是应该以编程方式创建所需的视图, 如果它是一个高级视图,您应该按照TheWAlkingCube建议的那样,动态地扩展xml视图。

答案 4 :(得分:0)

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

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

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

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

答案 5 :(得分:0)

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