Android - 仅支持垂直布局

68

我该如何确保我的应用程序只适用于垂直布局?

我尝试过使用android:screenOrientation="portrait",但好像没起作用。

8个回答

178

你需要为所有的活动添加,而不仅仅是一个。我认为你已经明白了该设置是应用程序范围内的,但事实并非如此。

<activity android:name=".MyActivity"
          android:label="My Activity"
          android:screenOrientation="portrait">

在AndroidManifest的每个想要只显示为竖屏的Activity标签中添加声明。


21

如果您希望某些活动仅以PORTRAIT模式锁定,则可以选择以下方式:

public abstract class BasePortraitActivity extends Activity {

    @Override
    protected final void onCreate(Bundle state) {
        super.onCreate(state);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        performOnCreate(state);
    }

    protected abstract void performOnCreate(Bundle state);

}

只需要在需要的地方扩展BasePortraitActivity或者在YourActivity.onCreate()中添加setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


对我来说,只有在super.onCreate(SavedPreferances)之后,setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)这一行才能正常工作。 - Bay

17

你需要修改AndroidManifest.xml文件。

对于每个活动,你需要插入:

android:configChanges = "orientation"

android:screenOrientation = "portrait"

例如:

<activity android:name=".YourActivityName"
                  android:label="@string/app_name"
                  android:configChanges = "orientation"
                  android:screenOrientation = "portrait">

这适用于单个活动... 但似乎没有应用程序范围的设置。


11
在你的清单文件中的活动部分添加以下内容:
<activity
        android:name="com.zeus.MyProject"
        android:screenOrientation="portrait"
        >

4

如果想要在所有Activity中阻止某些操作,可以使用Activity来进行阻止。只需在各自的Activity中重复这行代码即可。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

    // Here, talk to the java does not want that the user can rotate their activity.

    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

或者打开您的“AndroidManisfest.xml”文件,并按照下面所示添加竖屏模式的行。
        android:configChanges="orientation"
        android:screenOrientation="portrait">

2
在活动中添加android:configChanges="keyboardHidden|orientation"

1
将此属性放置在布局根中:

android:orientation="vertical"

这可能会有所帮助。


1

只是确认 Pentium10 的答案。
我遇到了类似的问题,将 android:screenOrientation="portrait" 添加到 activity 标记中。
对我有帮助。


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