我想让我的安卓应用只能横屏显示

53

我想让我的应用程序只在横屏模式下工作,但是无法使其正常工作。虽然第一页将处于横屏模式,其他活动将处于纵向模式,但我已经设置了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类

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

1
在提出问题之前,请先尝试并发布您的问题。 - Yerram Naveen
5个回答

89

保留清单中已有的部分。例如,考虑IntroHome活动。

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

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


嗯...奇怪。在我的应用程序中,它就像这样完美地工作。事实上,现在我检查了一下,我在默认布局文件夹中有一个早期的XML,而特定的内容只会以其横向版本显示出来。该活动根本不会进入其纵向版本。 - Siddharth Lele
Shripal,你在活动中添加了吗?它必须在AndroidManifest文件中。 - Gerard

3

没有朋友,我已经尝试了所有这些可能性,请提供其他解决方案......我也在我的问题中提供了我的XML文件。 - shripal
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 应该可以完美地工作。如果不行,可能是你的实现有问题。我过去也成功地使用过这个方法。 - DeRagan
1
谢谢!XML条目android:screenOrientation="landscape"没有起作用,但是这个基于代码的解决方案完美地解决了问题。 - CoderOfTheNight
注意!它将重新创建活动,可能会引起其他问题。 - Salman Khalid

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

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

您需要在 setContentView(R.layout.layout_name.xml) 之前放置这些代码。


1

尝试添加:

android:configChanges="orientation|keyboardHidden"

如果有帮助,请告诉我!只是一个猜测!


-2

这看起来像是一篇旧帖子,但我认为如果您在清单文件中将模式设置为横向,然后在Java代码中切换模式到横向,可能会导致设备两次切换模式而呈现为纵向模式。尝试注释掉您的Java文件中的代码,看看会发生什么。如果不起作用,您只需将其改回即可。简单易行的测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接