1

アクティビティを横向き/縦向きで使用できるようにしたい。アクティビティは、現在の向きのレイアウトで開始されます (つまり、アクティビティを開始する前)。その後、向きの変化に反応せず、それに固執する必要があります。

入れてみた

android:configChanges="orientation" 

アクティビティのマニフェストで、オーバーライドする

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
}

何もしないでください(スーパーコールにもコメントしようとしましたが、これは例外につながります)が、これは回転の変更を無効にする効果はありません-変更が処理され、レイアウトが再構築され、正しいものが使用されません。

しかも使えない

android:screenOrientation

常に1つのモードのみを指定する必要があるように思われるため、それも必要ではありません。とにかく、そこで何かを指定すると、回転時にアクティビティが再構築されます。で試した

android:screenOrientation="nosensor"

それは何もしません

ここには、コードhttp://www.samcoles.co.uk/mobile/android-lock-and-unlock-screen-orientation/による現在の向きのロックがあり ます

ただし、XML で向きを指定するのと同じ効果が得られます (レイアウトは維持されますが、アクティビティは再構築されます)。それは私が望むものに少し近いですが(最初からオリエンテーションを維持します)、アクティビティを再構築し、まったく反応させたくありません。

4

3 に答える 3

1

android:configChanges="orientation" はエミュレーターではまったく機能しませんが、デバイスでは正常に機能します。

于 2011-09-12T11:04:30.480 に答える
0

試す

@Override
public void onConfigurationChanged(Configuration newConfig) {
    newConfig.orientation = getResources().getConfiguration().orientation;
    super.onConfigurationChanged(newConfig);
}
于 2011-09-12T11:20:23.057 に答える
0

これをonCreateに追加

if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
        else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}
于 2014-02-04T22:34:14.523 に答える