我想让我的应用程序只在android中的横向

时间:2010-12-30 09:37:29

标签: android android-layout android-xml screen-orientation

我想让我的应用仅在横向模式下工作,但无法使其正常工作。我已经给了screenOrientation = "landscape",即使第一页将处于横向模式而其他活动将是纵向的。

XML文件

<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 CLASS

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);
        }
    };
}

5 个答案:

答案 0 :(得分:76)

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

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

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

答案 1 :(得分:3)

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

点击此链接了解更多信息

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

答案 2 :(得分:3)

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

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

您必须将这些代码放在setContentView(R.layout.layout_name.xml)之前。

答案 3 :(得分:1)

尝试添加:

android:configChanges="orientation|keyboardHidden"

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

答案 4 :(得分:-1)

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