如何在 React Native Android 开发模式下禁用横向模式?
How to disable landscape mode in React Native Android dev mode?
我是 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"
添加到您的 activity xml
如@morenoh149 所述,属性 的名称和值是 android:screenOrientation="portrait"。 React Native 在你的项目目录下的 Android 文件夹下生成一个名为 AndroidManifest.xml 的文件。在标签 manifest/application/activity 下的 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>
Harry Moreno 的评论是正确的。将其添加到 'activity' 部分的 android/app/src/main/AndroidManifest.xml。也改
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
至
android:configChanges="keyboard|keyboardHidden|screenSize"
删除方向,这样它就不会与添加的新行冲突,
android:screenOrientation="portrait"
您可以通过在 ReactApplication
class 中添加生命周期回调来简化逻辑:
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) {
}
});
}
所以你不需要配置AndroidManifest
2017年更新
除了上面发布的解决方案之外,如果您使用 Expo 来构建您的应用程序(目前在 React Native Blog 的官方指南中推荐),那么您只需在 orientation
中设置app.json
到 "portrait" 或 "landscape" 并使其同时适用于 iOS 和 Android 而无需编辑 iOS/Android-specific XML 配置文件:
"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-navigation
,则已接受的答案无效。改用这个:
Navigation.setDefaultOptions({
layout: {
orientation: ["portrait"],
},
});
查看文档 here。
打开你的android/app/src/main/AndroidManifest.xml
并添加这一行 android:screenOrientation="portrait"
和 android:configChanges="keyboard|keyboardHidden|orientation|screenSize
activity 部分内
看起来像那样
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
.....your other stuff
</activity>
如果它不起作用,你可以使用
react-native-orientation
对于 React Native Navigation,可以通过定义方向来修复 here:
Navigation.setDefaultOptions({
layout: {
orientation: ['portrait']
}
});
我是 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"
添加到您的 activity xml
如@morenoh149 所述,属性 的名称和值是 android:screenOrientation="portrait"。 React Native 在你的项目目录下的 Android 文件夹下生成一个名为 AndroidManifest.xml 的文件。在标签 manifest/application/activity 下的 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>
Harry Moreno 的评论是正确的。将其添加到 'activity' 部分的 android/app/src/main/AndroidManifest.xml。也改
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
至
android:configChanges="keyboard|keyboardHidden|screenSize"
删除方向,这样它就不会与添加的新行冲突,
android:screenOrientation="portrait"
您可以通过在 ReactApplication
class 中添加生命周期回调来简化逻辑:
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) {
}
});
}
所以你不需要配置AndroidManifest
2017年更新
除了上面发布的解决方案之外,如果您使用 Expo 来构建您的应用程序(目前在 React Native Blog 的官方指南中推荐),那么您只需在 orientation
中设置app.json
到 "portrait" 或 "landscape" 并使其同时适用于 iOS 和 Android 而无需编辑 iOS/Android-specific XML 配置文件:
"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-navigation
,则已接受的答案无效。改用这个:
Navigation.setDefaultOptions({
layout: {
orientation: ["portrait"],
},
});
查看文档 here。
打开你的android/app/src/main/AndroidManifest.xml
并添加这一行 android:screenOrientation="portrait"
和 android:configChanges="keyboard|keyboardHidden|orientation|screenSize
activity 部分内
看起来像那样
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
.....your other stuff
</activity>
如果它不起作用,你可以使用 react-native-orientation
对于 React Native Navigation,可以通过定义方向来修复 here:
Navigation.setDefaultOptions({
layout: {
orientation: ['portrait']
}
});