如何在React Native Android开发模式中禁用横向模式?
我是新的android环境。 我知道iOS可以在Xcode中完成,以禁用设备方向。 如何在React Native Android中禁用横向模式或任何方向模式?
谢谢。
将android:screenOrientation="portrait"
添加到android/app/src/main/AndroidManifest.xml
文件中的activity
部分,以便它看起来像这样:
<activity android:name=".Activity" android:label="Activity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation|screenSize"> </activity>
android:screenOrientation
属性有几个不同的值; 综合列表请看下面的内容: https : //developer.android.com/guide/topics/manifest/activity-element.html
http://developer.android.com/guide/topics/manifest/activity-element.html
将android:screenOrientation="portrait"
到您的活动xml中
正如@ morenoh149所述,属性的名称和值是做android:screenOrientation =“portrait”。 React Native在Android文件夹下的项目目录中生成名为AndroidManifest.xml的文件。 在标签清单/应用程序/活动下的XML文件中,您将添加行android:screenOrientation =“portrait”
一个例子如下所示
<uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> </application>
哈里·莫雷诺的评论是正确的。 将它添加到“activity”部分的android / app / src / main / AndroidManifest.xml中。 也改变
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:configChanges="keyboard|keyboardHidden|screenSize"
删除方向,使其不与新行添加冲突, android:screenOrientation="portrait"
您可以通过在ReactApplication
类中添加生命周期callback来简化逻辑:
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle bundle) { // Here we specify to force portrait at each start of any Activity activity.setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } @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) { } }); }
所以你不需要configurationAndroidManifest
2017更新
除了上面提到的解决scheme,如果你使用世博会来build立你的应用程序(就像目前在React本地博客的官方指南中推荐的那样),那么你只需要在app.json
设置orientation
为“纵向”或“横向”并使其在iOS和Android上同时工作,而无需编辑iOS / Android特定的XMLconfiguration文件:
"orientation": "portrait"
例:
{ "expo": { "name": "My app", "slug": "my-app", "sdkVersion": "21.0.0", "privacy": "public", "orientation": "portrait" } }
你也可以在运行时使用它:
ScreenOrientation.allow()
例:
ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);
更多细节:
有关更多信息,请参阅: 如何在React Native中禁用旋转?
- Android – 带有可序列化对象的SharedPreferences
- 你如何获得ViewPager for Android的当前页码?
- Android – 如何设置所有屏幕的背景颜色?
- Android:setSelection对Spinner没有影响
- 如何旋转中心点上的Android图标?
- 如何使用RecyclerView.State保存RecyclerView的滚动位置?
- RecyclerView.ViewHolder – getLayoutPosition vs getAdapterPosition
- 在viewpager中获取当前的Fragment实例
- 为我的android应用程序select正确的API级别