2011-07-12 3 views
1

私は、それぞれ、/ layoutと/ layout-landにポートレイトとランドスケープのレイアウトが保存されるウィジェットを開発しています。各レイアウトファイルの名前は同じですが、向きの違いに基づいて変更をフォーマットするために変更されています。Android WidgetはRemoteViewでキャッシュをクリアするように強制していますか?

向きの1つでウィジェットを開始してそこに保持するとうまくいきますが、向きが切り替わるとレイアウト全体が変わってしまいます。

ウェブを検索した後、Androidシステムがキャッシュから最新のRemoteViewを読み込むことがわかりました。ああ、私がランドスケープでウィジェットを開始した場合、ランドスケープのレイアウトはキャッシュされ、オリエンテーションを変更するときに使用されます。

私はこのことが起こるのを止めるために考えることができるすべてを試しましたが、無駄です。 Android RemoteViewのキャッシュをクリアして、修正されたレイアウトを強制的にロードすることができるかどうかは知っていますか?

おかげ

編集:私は、解決策を見つけたハックビットいえいる

...私は唯一のIDとそれにのLinearLayoutを持っている「ラッパー」のレイアウトを作成し

、ランドスケープバージョンの名前の末尾に_ランドがあるサブレイアウトを作成しました。

onUpdateメソッドとそのウィジェットを更新するサービスでは、画面の向きを確認してから、_landバージョンまたはnon-_landバージョンのいずれかをプログラムで選択してラッパーレイアウトに追加します。

私は、Googleがこれをやりやすくしていないとは思っていません。そのようなプログラム的な振る舞いをXML構成を使って自然に思うように強制する必要があります。

答えて

0

正常に動作させるには、layout-landlayout-portをディレクトリ(layoutlayout-landではなく)として使用する必要があります。

+0

ちょうど試しました。不幸なことに、変更はありません:(それでも、もともと作成された向きからレイアウトをロードしたいと思われる – user631845