2011-07-26 12 views
0

オリエンテーションの変更を処理するアクティビティを持つAndroidアプリがあります(マニフェストのandroid:configChanges="keyboardHidden|orientation")。スーパークラスを呼び出すハンドラもonConfigurationChangedです。Android:ランドスケープに回転

デバイスをローテーションすると、アクティビティはポートレートモードのままになります。そして、画面全体が物理的に下から上に向かう、Y軸が左から右に、ステータスバーが左の画面の縁に沿って実行され、すべてのテキストが物理的に上に行く奇妙な状態です。システムが方向変更を認識しないように強制されているかのようです。

私が本当にやりたいことは、アクティビティの再起動を避けたいのですが、注意深く置かれたレイアウトプロパティのフリップをほとんどしないでオリエンテーションの変更を処理したいと思います。しかし、GUIの上記の状態で私はそれを行うことはできません。メインレイアウトファイルを再読み込みすると、変更はありません。

質問 - 物理軸の向きを切り替えるようにシステムに指示すると、どのようにしてXY軸が必要なのでしょうか?

EDIT:ここ好奇心のデータポイントです:すべてのonConfigChanged呼び出しで、newConfig.orientationは、あなたが本当にandroid:configChangesを使用しないでください。1.

答えて

0

マニフェスト内の属性android:screenOrientation="portrait"は責任がありませんでした。この属性が存在すると、システムがアクティビティを再開させても、画面が真のランドスケープモードに切り替わることはありません。

0

です。この技術は最後の手段と考えられています。詳細はHandling Runtime Changesをお読みください。

android:configChangesを使用した場合は、構成変更イベントを処理し、新しい構成のUI​​リソースをリロードする責任があります。 が呼び出された場合、getResources()はすでに、新しい構成からのリソースを修正するように指示します。すべてのレイアウト、文字列、寸法、描画可能なものなどを新しい(潜在的に変更された)値で手動で再設定する必要があります。


また、代わりに通常の活動のワークフローのあなたがconfigChangesで行くことに決めた理由を、言及しませんでした。これはあなたにいくつかの選択肢を与えるのに役立つかもしれません。

+0

I * am *設定変更を処理しようとしています。最初のステップは、スクリーンを風景の中で動作させることでしょうか?どこの幅>高さですか?私はそれに失敗しています。新しいリソースをonConfigChange()にロードすることは、何もしません - 彼らはまだ肖像画に表示されます。レイアウトはポートレート固有のものとしてマークされていません。 –