【问题标题】:Android: using XML layout from internal storageAndroid:使用内部存储中的 XML 布局
【发布时间】:2013-06-27 01:56:05
【问题描述】:

Stackoverflow 对我的项目帮助很大。谢谢你。现在这是我的问题:

我为一家公司制作了一个应用程序。该公司有许多将使用该应用程序的客户。该公司希望为每个客户定制应用程序布局。他们希望更改元素和按钮图像的背景颜色等。

现在,我想:

  • 从他们的服务器下载自定义的 xml 布局
  • 下载自定义按钮图片等

(这两个当前都是从资源中加载的。)然后:

  • 使用这些设置应用程序的样式。

所以,下载不会有问题。将数据存储在内部存储器中也不会成为问题。但是。

如何告诉应用使用自定义的 xml 布局,可以在内部存储中找到?到目前为止,我一直在使用它。

setContentView(R.layout.activity_main);

现在,我想设置做同样的事情,但基于在内部存储中找到的 XML。

此外,我还想从内部存储中加载按钮等的图像,而不是从资源中加载。现在我用这个:

findViewById(R.id.button_x).setBackgroundResource(R.drawable.button02);

所以,简而言之,我的问题是:

有没有办法实现上述代码的功能,但使用内部存储中的文件?

【问题讨论】:

    标签: android xml layout dynamic internal


    【解决方案1】:

    您可能可以从下载的文件中创建一个XmlPullParser,通过XmlPullParser 对象对其进行扩充,并将其作为参数传递给setContentView。 XmlPullParser 的文档是here。您应该使用的充气方法是here。我从未尝试过,但理论上似乎可行

    编辑:

    @RoundSparrowhilltx 的一个项目可以在here找到

    【讨论】:

    • 感谢您的回复,这似乎是要走的路,直到我在文档中发现:“出于性能原因,视图膨胀严重依赖于在构建时完成的 XML 文件的预处理时间。因此,目前无法在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater。我想这会是个问题,不是吗?
    • 哦,我的错。然后,我认为唯一的方法是手动解析 xml 并以编程方式创建层次结构。
    • 如果有人有兴趣尝试这个:有一个开源应用程序 AnDroidDraw 有一个简单的类开始。参考:code.google.com/p/droiddraw/source/browse/trunk/AnDroidDraw/src/… - 我可以发布一个稍微改进的解析一些颜色的 ImageView 占位符。我想看看是否有人想对此进行扩展。
    • @RoundSparrowhilltx 感谢您的链接。那是你的一个项目吗?
    • 不,不是我的项目。我在这里研究后发现没有人找到课程。搜索引擎爬了很多次才找到它;)完全通过读取 XML 来膨胀并不是很有效——但这也是四核手机的时代;)我的用例也是一个永远不会被破坏/重新创建的活动(它是一个永远在线的浮动窗口,所以在应用关闭时不会关闭,也不会在旋转时改变)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2011-11-14
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多