2011-07-12 42 views
1

我正在开发一个小部件,其中纵向和横向布局分别保存在/ layout和/ layout-land中。每个布局文件都被命名为相同,但已根据其方向差异进行了格式更改。Android Widget强制RemoteView清除缓存?

当我在其中一个方向上启动一个小部件并将它保持在那里时,它可以很好地工作......但是当我切换方向时,整个布局变得不合时宜。

现在,搜索网络后,我发现Android系统从缓存中加载最新的RemoteView。也就是说,如果我在横向上启动它的窗口部件,横向布局会在更改oritentation时缓存和使用。

我试过了我能想到的一切,以阻止这种情况发生,但无济于事。 有谁知道是否有可能清除Android RemoteView缓存并强制它加载更正后的布局?

感谢

编辑:

我已经找到了解决办法,虽然有点哈克......

我创建了一个“包装”的布局,只有一个的LinearLayout在其与ID,然后创建子布局,其中景观版本在名称末尾具有_land。

在onUpdate方法和更新小部件的服务中,我检查屏幕的方向,然后以编程方式选择_land或非_land版本,并将其添加到包装布局。

我不能相信谷歌没有让这件事更容易做到,而且令人难以置信的是,我不得不迫使这种程序化行为脱离了使用XML配置应该看起来很自然的事情。

回答

0

您可能需要使用layout-landlayout-port作为目录(而不是layoutlayout-land)才能使其正常工作。

+0

刚刚尝试过。不幸的是,没有改变:(它似乎仍然想从最初创建的方向加载布局 – user631845