我试图为我的应用程序强制“纵向”模式,因为我的应用程序绝对不是为“横向”模式设计的。

在阅读了一些论坛后,我在我的清单文件中添加了这些行:

<application 
  android:debuggable="true"
  android:icon="@drawable/icon" 
  android:label="@string/app_name"
  android:screenOrientation="portrait">

但它不能在我的设备(HTC Desire)上使用。它从“纵向”切换到“横向”,忽略清单文件中的行。

在更多的论坛阅读后,我试图在我的清单文件中添加以下内容:

<application 
  android:debuggable="true"
  android:icon="@drawable/icon" 
  android:label="@string/app_name"
  android:configChanges="orientation"       
  android:screenOrientation="portrait">

这个函数在activity类中

public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

但是,还是不走运。


当前回答

如果您希望在调试和发布版本中支持不同的方向,请这样写(参见https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest)。

在构建。Gradle的应用程序文件夹写:

android {
    ...
    buildTypes {
        debug {
            applicationIdSuffix '.debug'
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // Creates a placeholder property to use in the manifest.
            manifestPlaceholders = [orientation: "fullSensor"]
        }
        release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // Creates a placeholder property to use in the manifest.
            manifestPlaceholders = [orientation: "portrait"]
        }
    }
}

然后在AndroidManifest中,你可以在任何活动中使用这个变量“orientation”:

<activity
    android:name=".LoginActivity"
    android:screenOrientation="${orientation}" />

你可以添加android:configChanges:

manifest占位符= [configChanges: "", orientation: "fullSensor"] in debug and manifest占位符= [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"] in release,

<activity
    android:name=".LoginActivity"
    android:configChanges="${configChanges}"
    android:screenOrientation="${orientation}" />

其他回答

不要将定向应用到应用程序元素,相反,您应该将属性应用到活动元素,并且您还必须按照下面所述设置configChanges。

例子:

<activity
   android:screenOrientation="portrait"
   android:configChanges="orientation|keyboardHidden">
</activity>

这应用于清单文件AndroidManifest.xml。

我认为android:screenOrientation="portrait"可以用于个人活动。所以在<activity>标签中使用该属性,如下所示:

<activity android:name=".<Activity Name>"
    android:label="@string/app_name" 
    android:screenOrientation="portrait">
   ...         
</activity>

要让整个应用运行在完全竖屏模式或完全横屏模式,你需要做一件非常简单的事情。

转到应用程序的manifest文件夹 查看定义了intent-filter的活动。它基本上是应用启动时打开的第一个活动。 在这个活动中添加android:screenOrientation="portrait"

这将使你的整个应用程序运行在纵向模式,或者你也可以设置它运行在横向模式。

我认为你要添加android:configChanges="定向|keyboardHidden"到你的活动?否则,该活动将在config-change上重新启动。onConfigurationChanged不会被调用,只有onCreate被调用

请注意,

android:screenOrientation="portrait"     
android:configChanges="orientation|keyboardHidden"

添加到清单文件中—其中定义了活动。