Je suis nouveau dans l'environnement Android. Je sais qu'iOS peut être installé dans Xcode pour désactiver l'orientation du périphérique. Comment puis-je désactiver le mode paysage ou tout mode d'orientation dans React Android natif?
Merci.
Ajouter Android:screenOrientation="portrait"
à la section activity
de Android/app/src/main/AndroidManifest.xml
fichier, pour qu’il ressemble à ceci:
<activity
Android:name=".Activity"
Android:label="Activity"
Android:screenOrientation="portrait"
Android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
Il existe plusieurs valeurs différentes pour le Android:screenOrientation
propriété; Pour une liste complète, consultez les éléments suivants: https://developer.Android.com/guide/topics/manifest/activity-element.html
http://developer.Android.com/guide/topics/manifest/activity-element.html
ajouter Android:screenOrientation="portrait"
à votre activité xml
Comme @ morenoh149 l'a indiqué ci-dessus, le nom de la propriété et la valeur à utiliser sont Android: screenOrientation = "portrait". React Native génère un fichier appelé AndroidManifest.xml dans le répertoire de votre projet, sous le dossier Android. Dans ce fichier xml, vous trouverez le tag manifeste/application/activité ajouter la ligne Android: screenOrientation = "portrait"
Un exemple est montré ci-dessous
<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>
Le commentaire de Harry Moreno est correct. Ajoutez-le à Android/app/src/main/AndroidManifest.xml dans la section 'activité'. Aussi changer
Android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
à Android:configChanges="keyboard|keyboardHidden|screenSize"
en supprimant l'orientation pour qu'il ne soit pas en conflit avec la nouvelle ligne ajoutée, Android:screenOrientation="portrait"
En plus des solutions indiquées ci-dessus, si vous utilisez Expo pour créer votre application (comme recommandé dans les guides officiels sur React Native Blog ), il vous suffit de définir orientation
dans app.json
pour "portrait" ou "paysage" et le faire fonctionner à la fois sur iOS et Android en même temps, sans qu'il soit nécessaire de modifier les fichiers de configuration XML spécifiques à iOS/Android :
"orientation": "portrait"
Exemple:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
Vous pouvez également l'utiliser au moment de l'exécution:
ScreenOrientation.allow()
Exemple:
ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);
Pour plus d'informations, voir: comment désactiver la rotation dans React Natif?
Vous pouvez simplement utiliser cette logique en ajoutant un rappel de cycle de vie dans la classe ReactApplication
:
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) {
}
});
}
Donc, vous n'avez pas besoin de configurer AndroidManifest
La réponse acceptée ne fonctionne pas si vous utilisez react-native-navigation
. Utilisez ceci à la place:
Navigation.setDefaultOptions({
layout: {
orientation: ["portrait"],
},
});
Vérifiez la documentation ici .