我可以通过setContentView从变量中显示XML吗?

时间:2010-12-07 13:50:05

标签: android xml layout

我正在尝试通过XSLT将XML文件转换为Android布局XML。到目前为止,我得到了这个工作,它返回有效的XML。我希望通过setContentView显示此输出(或者如果这不可能,我想将View添加到ViewFlipper。到目前为止,我还没有成功,我也找不到关于此主题的任何信息。

这是我的代码:

Source xmlSource = new StreamSource(projectFile); //a XML file on the SD card
Source xsltSource = new StreamSource(getResources().openRawResource(R.raw.session));
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);

OutputStream output = new StringOutputStream();
StreamResult result = new StreamResult(output);
trans.transform(xmlSource, result);

output.toString()以String格式返回转换后的XML,到目前为止一切正常!但是我如何在布局中使用这个XML? 我尝试了以下方法:

setContentView(output);

projectFlipper = (ViewFlipper)findViewById(R.id.projectFlipper);
projectFlipper.addView(output);

我试图投射变量,但我已经被困了很长一段时间了。我在俯瞰什么?或者没有办法做到这一点?

提前致谢!

3 个答案:

答案 0 :(得分:2)

实际上,视图是使用LayoutInflater通过XML文件创建的。但是,如本课程的javadoc所述:

  

重要:出于业绩原因,观点通胀严重依赖   关于XML文件的预处理   在构建时完成。因此它是   目前无法使用   带有XmlPullParser的LayoutInflater   在运行时通过纯XML文件。

因此,如您所见,动态使用XML文件创建新视图是不可能的。但是,您应该能够翻译“转换”逻辑,以便以编程方式创建屏幕。

答案 1 :(得分:1)

这是不可能的。编译所有资源并将其添加到项目apk中。你可以做的是手动解析xml并在运行时创建视图。

答案 2 :(得分:0)

您可以让XSLT为您构建代码,以便动态生成视图

寻找灵感:

http://www.javaworld.com/javaworld/jw-02-2002/jw-0201-xslt.html