2011-07-12 93 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