我正在尝试通过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);
我试图投射变量,但我已经被困了很长一段时间了。我在俯瞰什么?或者没有办法做到这一点?
提前致谢!
答案 0 :(得分:2)
实际上,视图是使用LayoutInflater通过XML文件创建的。但是,如本课程的javadoc所述:
重要:出于业绩原因,观点通胀严重依赖 关于XML文件的预处理 在构建时完成。因此它是 目前无法使用 带有XmlPullParser的LayoutInflater 在运行时通过纯XML文件。
因此,如您所见,动态使用XML文件创建新视图是不可能的。但是,您应该能够翻译“转换”逻辑,以便以编程方式创建屏幕。
答案 1 :(得分:1)
这是不可能的。编译所有资源并将其添加到项目apk中。你可以做的是手动解析xml并在运行时创建视图。
答案 2 :(得分:0)