我是Android开发的新手,我将开发一个Android应用程序。在这个应用程序中,我想动态生成xml布局。登录到应用程序后,服务器将发送带有控件描述的xml模板,包括不同的属性描述(每个控件的验证,maxlength,控件的大小等),这意味着没有预定义的xml布局。
我的计划是,从下载的xml模板中我将创建一个xml布局并将该xml存储在sqlite数据库中。当用户点击我想要的记录时,向用户显示这个动态创建的表单。
是否可以修改xml布局(比如设置innerxml)?
答案 0 :(得分:2)
你可以尝试类似的东西:
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(myXmlPullParser, null);
setContentView(myView);
答案 1 :(得分:1)
重要出于性能原因,查看通胀严重依赖于在构建时完成的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布局的每个视图