Android 如何设置屏幕禁止旋转?竖屏模式配置真机失效怎么解决
核心问题说明
你配置的android:orientation="vertical"是线性布局等布局容器的子元素排列方向属性,和Activity屏幕方向控制完全无关。模拟器上看似生效只是测试环境巧合,和该配置无关联。
正确的竖屏固定配置方法
在AndroidManifest.xml中,给需要固定竖屏的Activity标签添加android:screenOrientation属性,属性值设为portrait即可:
<activity android:name=".你的Activity类名" android:exported="true" android:screenOrientation="portrait"> <!-- 其他Activity配置项 --> </activity>
如果需要整个应用所有页面都固定竖屏,也可以直接给<application>标签添加上述android:screenOrientation="portrait"属性。
screenOrientation配置后仍失效的排查方案
- 检查属性配置位置:该属性必须添加在
AndroidManifest.xml的<activity>或者<application>标签下,添加到布局文件中不会生效 - 排查Activity代码逻辑:检查页面代码中是否存在动态修改屏幕方向的代码,例如
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)这类代码会覆盖Manifest中的静态配置 - 检查第三方组件配置:如果应用引入了第三方SDK、插件,其内置的Activity默认配置会覆盖全局配置,你可以在Manifest中手动注册对应第三方Activity,加上竖屏配置并用
tools:replace属性覆盖原有配置:<activity android:name="第三方SDK的Activity全类名" android:screenOrientation="portrait" tools:replace="android:screenOrientation"/> - 排查ROM定制限制:部分国产定制ROM有强制全局旋转、无视应用方向配置的功能,可以先换原生Android系统的设备测试,确认是否是系统设置导致的问题
- 高版本系统适配:适配Android 12及以上系统的应用,如果配置了
android:resizeableActivity="true"开启了自由窗口适配,部分场景下方向配置会失效,需要固定方向的页面可以单独设置android:resizeableActivity="false"
内容的提问来源于stack exchange,提问作者Ruthvik
相关产品推荐
相关产品推荐

