こんにちは私はネイティブスクリプトでデバイスの向きを設定する方法を知りたいです。具体的には、私が書いているアプリケーションが常に同じ向き(縦)に留まるようにして、デバイスを回転しても横にならないようにします。
Nativescript-orientationプラグインとsetOrientationを試しました。
var orientation = require('nativescript-orientation');
console.log(JSON.stringify(orientation));// outputs JS: {}
orientation.setOrientation("portrait");
しかし、「未定義のプロパティsetOrientationを読み取れません。tnsプラグインリストにプラグインがインストールされていることが表示されます。また、platforms/Android
ディレクトリを削除してtns platform add Android
を実行して同じ結果が得られました。
また、Android:screenOrientation="portrait"
のさまざまな組み合わせをAndroidManifest.xmlに入れてみましたが、成功しませんでした。
App_resources内のAndroidManifest.xmlは次のようになります
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="__PACKAGE__"
Android:versionCode="1"
Android:versionName="1.0">
<supports-screens
Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"/>
<uses-sdk
Android:minSdkVersion="17"
Android:targetSdkVersion="__APILEVEL__"/>
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.INTERNET"/>
<application
Android:screenOrientation="portrait"
Android:name="com.tns.NativeScriptApplication"
Android:allowBackup="true"
Android:icon="@drawable/icon"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
<activity
Android:name="com.tns.NativeScriptActivity"
Android:label="@string/title_activity_kimera"
Android:configChanges="keyboardHidden|orientation|screenSize"
Android:theme="@style/LaunchScreenTheme">
<meta-data Android:name="SET_THEME_ON_LAUNCH" Android:resource="@style/AppTheme" />
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name="com.tns.ErrorReportActivity"/>
</application>
</manifest>
私のアプリは縦向きのみです。
Androidの場合、activity
タグ内の_Android:screenOrientation="portrait"
_に_AndroidManifest.xml
_を追加するだけです。
IOSの場合、open Xcode -> Select project on project navigator (left panel) -> Select target in middle panel -> Choose "General" tab -> Tick only "Portrait" in Deployment info section
iOSの場合(Xcodeがない場合は、1つのファイルを操作するだけです。)
app/App_Resources/iOS/Info.plist
コメントアウトまたは削除:
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
app/App_Resources/iOS/Info.plist
...
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
(コメントでこのソリューションについてすでに言及している@mudlabsへの小道具)
NativeScript Sidekick を使用している場合、AndroidプロジェクトのプロパティからiOSの向きを設定できます。
一番上の答えは正しいですが、Android:screenOrientationだけを追加しても機能しない場合があります。
Android:screenOrientation="portrait" Android:configChanges="keyboardHidden|orientation|screenSize"
とconfigOrgsの前に最初にscreenOrientationをメモするを追加することで機能しました。
実際、私はAndroidスタジオとNativescriptの両方でテストしました。