2011-08-22 9 views
6

AndroidManifestのすべてのアクティビティにandroid:screenOrientation="portrait"を追加するのではなく、アプリケーション全体にランドスケープモードを設定する方法はありますか?アプリケーション全体のランドスケープモードを無効にする

+2

これはAndroidでこのようなことを処理する方法ではありません。あなたがそうする理由がない限り、私はマニフェストでこれを行うことをお勧めします。 – Codeman

答えて

10

ここでは、私が考えることができる唯一のことです。アクティビティを拡張するクラスを作成し、そのクラスに次のように記述します。

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

次に、他のクラスのアクティビティを拡張する代わりに、新しいクラスを拡張します。

+0

これはoncreateメソッドのどこに配置しますか? – theJerm

+1

はい - スーパークラスのonCreateメソッドに入れることができます。拡張クラスからsuper.onCreateを呼び出すことを忘れないでください。 – SBerg413

+0

ありがとうございます。 – theJerm

0

マニフェストのノードにその属性を入れてみることができます。私はそれがサポートされているかどうかわからない。そして、もしあなたがいなくても、あなたのそれぞれにそれを置くのを恐れることは、次に簡単な方法になるでしょう。

あなたはアクティビティを拡張するCustomActivityを作成し、onCreateでウィンドウのフラグをPortraitに設定することで、それを実現できます。その後、他のすべてのアクティビティで、単純なアクティビティの代わりにCustomActivityを拡張することができます。

7

私が考えることができるプログラム的な方法の1つは、アクティビティを拡張しそこからすべてのクラスを拡張するスーパークラスを作成することです。

が保護された方法では、スーパークラスで以下の設定を持っているとsuper.xxx()を呼び出し、これを開始するには:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

をする場合には、あなたが別の方法で具体的な活動は、あなたは、単にこのメソッドをオーバーライドすることができるもの。

[私はこれをまだ試していないが、OOPの知識によって、この作品]

+2

このメソッドを使用してアクティビティが開始されると、時には風景から肖像画に飛ぶことができますので、これに対して助言します! – Dori

関連する問題