用于动态布局的XML解析器(动态加载的皮肤)

dnh*_*h37 7 android

我想编写一个应用程序,其中(至少目前)内容始终相同,但是在运行时根据用户首选项动态加载布局.基本上我希望应用程序应用一个看起来与其他皮肤完全不同的"皮肤".

我找到了一些使用SAXparser的教程:http ://www.androidpeople.com/android-xml-parsing-tutorial-using-saxparser/ http://twigstechtips.blogspot.com/2010/12/android-how-to-parse -xml-string.html 可以想象从头开始编写可识别所有标准xml布局标签的东西,然后动态加载布局的每个部分.但这是从头开始做的很多工作!当然这个功能在android中可用,或者肯定有人编写了一些开源代码,可以在你的活动onCreate方法的开头运行,它接收一个xml文件并设置你的布局?

我在这里找到了一个类似但令人不满意的问题: 如何以编程方式创建一个布局文件 ,这让我觉得因为setContentView必须以整数resourceID作为参数,所以这些在编译时预先烘焙可能是个问题.(setContentView也可以将View对象作为其参数,但我不想要大量的if语句并逐个传递每个View对象,我想要一些输入xml文件或xml字符串的代码并设置内容视图.)

也许我离开了轨道.还有另一种方法吗?我认为拥有动态加载皮肤的应用程序的能力很重要.

谢谢!

Pet*_*ego 2

我有类似的要求并尝试了相同的方法 - 它不起作用。

文档清楚地说明了这一点:http ://developer.android.com/reference/android/view/LayoutInflater.html

更新:

由于 OP 需要加载运行时创建的 XML 布局:

也许可以通过创建 XML 布局文件、将它们复制到虚拟项目、创建 .apk 然后将 apk 加载到设备上来完成。

然后可以使用DexClassLoader加载 apk 内的类。