Androidのランドスケープモードを無効にするには?

Androidアプリの一部のビューでランドスケープモードを無効にするにはどうすればいいですか?

ソリューション

AndroidManifest.xml内のアクティビティに、android:screenOrientation="portrait"を追加します。例えば、以下のようになります。

EDIT: これは非常に人気のある回答になっているので、私は非常に罪悪感を感じています。なぜなら、強制ポートレートは、頻繁に適用される問題に対して正しい解決策であることはほとんどないからです。 強制ポートレートの主な注意点です。

また アプリの回転以外にも、アクティビティの破壊/再生を引き起こす可能性のある アプリの回転以外にも、マルチタスクのように避けられないものも含めて、アクティビティの破棄/再作成を引き起こすものはたくさんあります。バンドルや retainInstance フラグメントの使い方を覚えましょう。

  • iPhoneのように均一ではなく、デバイスによってはポートレートが一般的ではない場合があることを覚えておいてください。Nvidia Shieldのようなハードウェアキーボードやゲームパッドを搭載したデバイスや、ChromebooksfoldableSamsung DeXなどでは、強制的に縦長にすることで、アプリの使用感が制限されたり、操作性が大きく損なわれたりする可能性があります。もしあなたのアプリが、他の方向をサポートすることで否定的な体験につながるような強いUXの主張がないのであれば、おそらく横向きを強制すべきではないでしょう。これは、固定されたハードウェアドックで常に使用される特定モデルのタブレット用のレジアプリです」というような話です。

そのため、ほとんどのアプリは、電話機のセンサー、ソフトウェア、物理的な構成に任せて、ユーザーがアプリをどのように操作したいかを自分で判断する必要があります。しかし、「センサー」の向きに関するデフォルトの動作に満足できない場合は、いくつかのケースについて検討する必要があるかもしれません。

  • 主な懸念事項が、デバイスのセンサーやソフトウェアがうまく対処できないと思われる、アクティビティの途中での偶発的な向きの変更である場合(たとえば、チルトベースのゲームなど)は、ランドスケープとポートレートをサポートすることを検討しますが、向きには nosensor を使用します。これにより、ほとんどのタブレットでは横向きになり、ほとんどの電話では縦向きになりますが、それでもほとんどの「普通の」アプリにはお勧めできません(電話の横向きのソフトキーボードで入力したいユーザーもいますし、多くのタブレットユーザーは縦向きで読書をします。
  • それでも何らかの理由で強制的に縦長にする必要がある場合は、Android 2.3+では portrait よりも sensorPortrait の方が良いかもしれません。これは、タブレットでよくある上下逆さまの縦長を可能にします。
解説 (12)

私はこの記事を読むまで、AndroidManifest.xmlファイルの切り替えを知らなかったので、私のアプリでは代わりにこれを使っています。

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation
解説 (3)

/platform/androidディレクトリに、AndroidManifest.xmlを作成しました (生成されたものからコピーしました)。 そして、すべてのアクティビティ要素に、android:screenOrientation="portrait`" を追加します。

解説 (0)