Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在纵向模式下锁定android活动,而不针对每个活动执行此操作_Android_Android Layout_Portrait - Fatal编程技术网

在纵向模式下锁定android活动,而不针对每个活动执行此操作

在纵向模式下锁定android活动,而不针对每个活动执行此操作,android,android-layout,portrait,Android,Android Layout,Portrait,所以我知道我可以为清单中的每个活动执行android:screenOrientation=“肖像”,这将把活动锁定到肖像模式。但是我想知道在清单中是否有一个地方可以输入一次,并将其应用于整个应用程序。在清单文件中,您可以这样给出 <activity android:name="com.androidcalapp.MainActivity" android:label="@string/app_name" and

所以我知道我可以为清单中的每个活动执行
android:screenOrientation=“肖像”
,这将把活动锁定到肖像模式。但是我想知道在清单中是否有一个地方可以输入一次,并将其应用于整个应用程序。

在清单文件中,您可以这样给出

   <activity
            android:name="com.androidcalapp.MainActivity"
            android:label="@string/app_name" 
            android:screenOrientation="landscape">

创建自定义活动,在其中定义方向并将其固定到所需位置

从使用固定方向定义的CustomActivity继承应用程序中的所有活动


编辑:提供了做同样事情的另一种方法,但我喜欢相信我的方法更优雅,因为你不需要为每个活动调用函数

创建自定义活动

public class CustomActivity extends Activity{

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }else{
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
}
}

然后,对于您创建的所有活动,例如ActivityA,ActivityB将其从CustomActivity扩展


所以你只是重复了我说的我已经知道了。不知怎的,有人给了你一张赞成票。@user3093402这就是我说的,我们必须在清单中重复它,否则当我更新上面的答案时,可以在运行时处理。@iburnny:OP说的是在整个应用程序中只做一次。例如,他可能有30项活动。因此,复制和粘贴同一代码30次有点低效。:)@谢谢你的澄清。但我明白了他的要求。这就是为什么我编辑了我以前的答案,并对其进行了测试。:)这肯定会成功的。但我更希望安卓在清单中有办法做到这一点。扩展自定义活动并不总是很方便的,因为有多种类型的活动,但同样,这种想法会减少工作负载+1为什么会有执行相同代码的if-else语句?事实上,您提供的链接比您自己的答案更通用。正如我告诉@John的,扩展CustomActivity并不总是方便的+谢谢你的盛情款待。我读了你对@John的回答的评论。我不得不说,我从来没有想过要进行不同类型的活动。非常感谢您指出这一点。:)
public class CustomActivity extends Activity{

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }else{
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
}
public class ActicityA extends CustomActivity {}

public class ActivityB extends CustomActivity {}