React Native安卓端如何锁定应用为竖屏模式?
React Native安卓端如何锁定应用为竖屏模式?
我太懂你这种头疼的感觉了——明明在AndroidManifest里加了android:screenOrientation="portrait",结果关掉设备的方向锁后,App还是不听话地切换到横屏。别慌,这几个靠谱的解决办法你挨个试试:
确认AndroidManifest的配置位置和覆盖范围
你得确保android:screenOrientation="portrait"是加在每个<activity>标签里,而不是只放在<application>标签上!比如你的MainActivity、启动页SplashActivity(如果有的话)都要加上这个属性,不然个别Activity可能还是会横屏。正确的配置示例如下:<activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"> </activity>另外别忘了执行
cd android && ./gradlew clean清理一下项目缓存,再重新运行App,有时候缓存会导致配置修改不生效。在MainActivity代码里强制锁定方向
有时候Manifest的配置可能会被React Native的内部逻辑覆盖,这时候直接在Activity代码里硬锁方向会更稳妥:
如果你的MainActivity是Java编写的:import android.content.pm.ActivityInfo; import android.os.Bundle; import com.facebook.react.ReactActivity; public class MainActivity extends ReactActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 强制设置为竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } // 保留你原有的其他代码... }如果是Kotlin版本的MainActivity:
import android.content.pm.ActivityInfo import android.os.Bundle import com.facebook.react.ReactActivity class MainActivity : ReactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 强制设置为竖屏 requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } // 保留你原有的其他代码... }排查第三方库的干扰
如果你用了React Navigation这类导航库,要检查有没有在某个屏幕的配置里不小心开启了横屏权限。比如别在屏幕的options属性里加screenOrientation: 'landscape'这类设置,不然会覆盖全局的竖屏配置。
备注:内容来源于stack exchange,提问作者Sahan Rajapaksha
相关产品推荐
相关产品推荐

