51

我想让我的应用程序只在横向模式下工作,但不能让它工作。screenOrientation = "landscape"即使第一页将处于横向模式并且其他活动将处于纵向模式,我也已经给出了。

文件

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>     

    </activity>

    <activity android:name=".IntroHome"
              android:label="@string/app_name"
              android:screenOrientation="landscape">
    </activity>

    <activity android:name=".ObjectivesPage"
              android:label="@string/app_name"
              android:screenOrientation="landscape" >
    </activity>

    <activity android:name=".MenuPage"
              android:label="@string/app_name"
              android:screenOrientation="landscape" >
    </activity>
</application>

JAVA类

public class ObjectivesPage extends Activity{

    ImageButton  imgButton;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.objectivespage);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        imgButton = (ImageButton)findViewById(R.id.buttonCloseNGo);
        imgButton.setOnClickListener(onClickCloseNGo);
    }

    private OnClickListener onClickCloseNGo = new OnClickListener(){

        public void onClick(View v) {
            Intent intent = new Intent(ObjectivesPage.this,MenuPage.class);
            startActivity(intent);
        }
    };
}
4

5 回答 5

84

保持清单的这一部分原样。例如,考虑 IntroHome 活动。

<activity android:name=".IntroHome"
           android:label="@string/app_name"
           android:screenOrientation="landscape"  
           >
</activity>

对于活动 XML,请确保layout-land文件夹中有 IntroHome 活动布局 XML。这样,您拥有的活动/活动将仅显示您定义的 XML 的横向版本。

于 2010-12-30T09:56:45.697 回答
3

您也可以尝试从代码中设置方向

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

检查此链接以获取更多信息

http://www.devx.com/wireless/Article/40792/0/page/5

于 2010-12-30T09:47:09.683 回答
3

您可以根据要求使用以下代码:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

你必须把这些代码放在前面setContentView(R.layout.layout_name.xml)

于 2010-12-30T11:42:46.740 回答
1

尝试添加:

android:configChanges="orientation|keyboardHidden"

让我知道它是否有帮助!只是猜测!!

于 2010-12-30T09:45:32.740 回答
-2

这看起来像是一篇旧文章,但在我看来,如果您在清单文件中将模式设置为横向,然后在 java 代码中将模式切换为横向,您可能会切换两次模式,导致设备呈现而是纵向模式。尝试注释掉您的 java 文件中的代码,看看会发生什么。如果它不起作用,你所要做的就是把它改回来。简单的 peasy 测试。

于 2014-02-25T14:46:42.080 回答