如何使应用程序忽略屏幕方向更改?

Lyu*_*tko 67 android

有没有办法让应用程序完全忽略屏幕方向的变化?

Mar*_*Gil 58

当键盘打开/关闭时,可以非常轻松地覆盖默认行为并禁止屏幕方向更改.

修改清单

打开清单,切换到"应用程序"选项卡,然后为方向更改行为选择要覆盖的所需活动.

  1. 在属性中,您需要更改两个字段:屏幕方向:选择纵向或横向 - 无论哪个需要.这将是默认布局.

  2. 选择要覆盖的配置更改的事件:在这种情况下,这些是键盘隐藏和方向.

修改Activity实现

现在,您需要覆盖所需Activity中的单个函数.

只需将以下函数添加到Activity的类中即可.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}
Run Code Online (Sandbox Code Playgroud)

如果使用Source->Override/Implement Methods 菜单选项,这是默认实现.

而已!现在,您的方向将始终保持.

请记住,此设置是按活动进行的 - 因此您需要为每个要禁止方向更改的活动重复此步骤!

(基于SDK 1.1)

  • 不是简单地调用超类就不会改变任何东西吗? (16认同)
  • 我只是在玩一些非常相似的东西 - 我认为Manifest文件的更改已经足够了,至少它们对我来说(这似乎是合乎逻辑的,正如Matthias指出的那样). (10认同)

has*_*man 28

您可以使用以下行(在活动中调用)对代码进行相同的更改:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

拨打此电话后,您的应用程序将保持横向(或纵向)模式.您可以使用相同的调用(使用不同的ActivityInfo枚举)使其对方向移动再次敏感.

关于开发方向感知Android应用程序的主题,有一篇完整的DevX文章.

(警告:因为我发布了这个链接,DevX已经建立了一个注册墙.)


byt*_*der 21

如果你是通过设置AndroidManifest.xml或与setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);您要运行与问题药片.他们的自然/默认方向是风景.

如果您真的想完全忽略屏幕方向更改,我会使用此setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);值.我在Stack Overflow问题Android自然传感器定位帮助中详细介绍了它.

这是xml:

<activity 
    android:name=".MyActivity" 
    android:screenOrientation="nosensor"
    android:configChanges="orientation|keyboardHidden|keyboard"/>
Run Code Online (Sandbox Code Playgroud)


Fee*_*ood 14

您可以在AndroidManifest.xml文件中定义您的活动,如下所示:

<activity 
    android:name=".MyActivity" 
    android:screenOrientation="portrait"
    android:configChanges="orientation|keyboardHidden|keyboard"/>`
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您应该为每个活动设置属性.我找不到所有应用程序的内联解决方案.