web-dev-qa-db-ja.com

Androidすべてのアクティビティの画面方向の変更

Androidアプリケーションの画面の向きを縦向きに修正したい。Googleを使用すると、manifest.xmlに次のコードを追加することでこれを実行できることがわかりました。

<activity Android:name=".LauncherActivity"
  Android:configChanges="keyboardHidden|orientation" 
  Android:screenOrientation="portrait">
</activity>

それで十分ですが、問題は次のとおりです。現在約15のアクティビティがあり、この数は増えるでしょう。すべての活動に一度にオリエンテーションを適用する方法はありますか?

私は次の方法でスタイルを使用しようとしました:

theme.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <style name="Custom" parent="Android:Theme">
    <item name="Android:screenOrientation">portrait</item>
    <item name="Android:windowBackground">@drawable/launcher</item>
    <item name="Android:configChanges">keyboardHidden|orientation</item>
  </style>
</resources>

Manifest.xml

<application ... 
Android:debuggable="true"
  Android:theme="@style/Custom"
>
//...
</application>

または

<activity
... 
  Android:theme="@style/Custom"
>
//...
</activity>

どちらの例もwindowBackgroundを正常に適用しますが、screenOrientationは機能しません。何か案は?

30
PVoLan

ありえない。繰り返す必要があります

<activity Android:name=".LauncherActivity"
  Android:configChanges="keyboardHidden|orientation" 
  Android:screenOrientation="portrait">
</activity>

すべての<activity>マニフェストのタグ。

21
PVoLan

Activityを拡張するクラスを作成できます:

public class PortraitActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

そして、あなたの活動がPortraitActivityではなくActivityを拡張するなら、それはうまくいくと思います。

編集:SCREEN_ORIENTATION_PORTRAITまたはSCREEN_ORIENTATION_LANDSCAPE

15
mthpvg