我试图为我的应用程序强制“纵向”模式,因为我的应用程序绝对不是为“横向”模式设计的。
在阅读了一些论坛后,我在我的清单文件中添加了这些行:
<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);
}
但是,还是不走运。
根据Android的文档,你也应该经常包括screenSize作为可能的配置更改。
android:configChanges="orientation|screenSize"
如果应用程序的目标是API级别13或更高(由
minSdkVersion和targetSdkVersion属性),那么您也应该
声明"screenSize"配置,因为当a
设备在纵向和横向方向之间切换。
此外,如果你都包括值keyboardHidden在你的例子,你不应该也考虑locale, mcc, fontScale,键盘和其他?
根据Android的文档,你也应该经常包括screenSize作为可能的配置更改。
android:configChanges="orientation|screenSize"
如果应用程序的目标是API级别13或更高(由
minSdkVersion和targetSdkVersion属性),那么您也应该
声明"screenSize"配置,因为当a
设备在纵向和横向方向之间切换。
此外,如果你都包括值keyboardHidden在你的例子,你不应该也考虑locale, mcc, fontScale,键盘和其他?
如果您希望在调试和发布版本中支持不同的方向,请这样写(参见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}" />
我在androidmanifest。xml中有这一行
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/app_name" android:name="Project Name"
android:theme="@android:style/Theme.Black.NoTitleBar">
我把它改成了(刚刚添加了android:screenOrientation="portrait")
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/app_name" android:name="Project Name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar">
这为我解决了问题。