我试图为我的应用程序强制“纵向”模式,因为我的应用程序绝对不是为“横向”模式设计的。
在阅读了一些论坛后,我在我的清单文件中添加了这些行:
<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);
}
但是,还是不走运。
我在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">
这为我解决了问题。
如果你有很多像我这样的活动,在你的应用程序中,或者如果你不想在manifest中为每个活动标签输入代码,你可以这样做。
在你的Application Base类中,你会得到一个生命周期回调
基本上,在每个活动中,当在应用程序类中创建时发生的事情是在这里被触发的代码。
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// for each activity this function is called and so it is set to portrait mode
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
我希望这能有所帮助。