【发布时间】:2011-07-12 02:29:59
【问题描述】:
我正在开发一个小部件,其中纵向和横向布局分别保存在 /layout 和 /layout-land 中。每个布局文件的名称相同,但已根据其方向差异进行了格式更改。
当我在其中一个方向启动一个小部件并将其保持在那里时,它工作正常......但是当我切换方向时,整个布局变得混乱。
现在,在网上搜索后,我发现Android系统从缓存中加载了最新的RemoteView。 Aka,如果我在横向启动小部件,横向布局会被缓存并在更改方向时使用。
我已尽我所能阻止这种情况的发生,但无济于事。 有谁知道是否可以清除 Android RemoteView 缓存并强制它加载更正的布局??
谢谢
编辑:
我找到了一个解决方案,虽然有点老套...
我创建了一个“包装器”布局,其中只有一个带有 ID 的 LinearLayout,然后创建了子布局,其中横向版本的名称末尾有一个 _land。
在 onUpdate 方法和更新小部件的服务中,我检查屏幕的方向,然后以编程方式选择 _land 或非 _land 版本,并将其添加到包装器布局中。
我不敢相信 Google 没有让这件事变得更容易,而且我不得不强迫这种程序化行为脱离使用 XML 配置似乎很自然的事情,这让我非常沮丧。
【问题讨论】: