วิธี จำกัด แอพให้อยู่ในโหมดแนวตั้งเฉพาะในไอออนิกสำหรับทุกแพลตฟอร์ม?


121

ฉันกำลังทำงานกับ Ionic / Cordova ฉันได้เพิ่มสิ่งนี้เข้าไปandroidManifest.xmlแต่สิ่งนี้ไม่ได้ผลสำหรับฉันและแอปยังแสดงทั้งสองแบบ

android:screenOrientation="portrait"

ฉันจะ จำกัด แอปให้อยู่ในโหมดแนวตั้งเท่านั้นได้อย่างไร ฉันตรวจสอบบน Android แล้วและใช้งานไม่ได้


มันทำงานสำหรับไอออนิกหรือไม่เพราะมันทำงานสำหรับไอออนิก 2
manish kumar

คำตอบ:


315

หากคุณต้องการ จำกัด เฉพาะโหมดแนวตั้งบนอุปกรณ์ทั้งหมดคุณควรเพิ่มบรรทัดนี้ใน config.xml ในโฟลเดอร์รูทโปรเจ็กต์ของคุณ

<preference name="orientation" value="portrait" />

หลังจากนั้นโปรดสร้างแพลตฟอร์มใหม่โดยพิมพ์ข้อความด้านล่างในบรรทัดคำสั่ง:

ionic build

2
น่าดู. ทำงานให้ฉัน ตรวจสอบบน Android ขอบคุณ Vadiem
Muhammad Faizan Khan

1
คุณ จำกัด เฉพาะหน้าจอเดียวได้อย่างไร?
user3607282

1
ฉันยังไม่ได้ทดสอบด้วยตัวเอง แต่คุณอาจได้ผลลัพธ์ที่ต้องการจากบทช่วยสอนนี้: gajotres.net/…
Vadiem Janssens

4
ดูเหมือนว่าจะใช้งานได้เมื่อคุณเรียกใช้บนอุปกรณ์จริงเท่านั้น หากคุณเรียกใช้ผ่านแอพ Ionic View บนคลาวด์จะไม่มีผลใด ๆ
Johncl

1
ตกลงสำหรับ Ionic 4
Pierrick Martellière

36

อัปเดต Ionic v2 +

สำหรับ Ionic เวอร์ชัน 2 ขึ้นไปคุณจะต้องติดตั้งแพ็คเกจIonic Native ที่เกี่ยวข้องสำหรับปลั๊กอินที่คุณใช้รวมถึงcordova-plugin-และphonegap-plugin-ปลั๊กอิน

  1. ติดตั้ง Ionic Native Plugin

    ติดตั้งโมดูล typescript อิออนพื้นเมืองของปลั๊กอินจากที่CLI

    $ ionic cordova plugin add --save cordova-plugin-screen-orientation
    $ npm install --save @ionic-native/screen-orientation
    

    * โปรดทราบว่า--saveคำสั่งเป็นทางเลือกและสามารถละเว้นได้หากคุณไม่ต้องการเพิ่มปลั๊กอินลงในpackage.jsonไฟล์ของคุณ

  2. นำเข้าScreenOrientationปลั๊กอิน

    นำเข้าปลั๊กอินลงในcontrollerรายละเอียดมากขึ้นที่มีอยู่ในเอกสาร

    import { ScreenOrientation } from '@ionic-native/screen-orientation';
    
    @Component({
        templateUrl: 'app.html',
        providers: [
            ScreenOrientation
        ]
    })
    
    constructor(private screenOrientation: ScreenOrientation) {
      // Your code here...
    }
    
  3. ทำสิ่งของคุณ

    ล็อกและปลดล็อกการวางแนวหน้าจอตามโปรแกรม

    // Set orientation to portrait
    this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT);
    
    // Disable orientation lock
    this.screenOrientation.unlock();
    
  4. คะแนนโบนัส

    คุณยังสามารถรับการวางแนวปัจจุบัน

    // Get current orientation
    console.log(this.screenOrientation.type);  // Will return landscape" or "portrait"
    

1
หมายเหตุ: คุณต้องมี "@ ionic-native / core": "^ 3.6.1" เนื่องจากเวอร์ชันที่ต่ำกว่าทำให้เกิดข้อผิดพลาด: forum.ionicframework.com/t/…
Luckylooke

ลองเพิ่ม ScreenOrientation ในรายชื่อผู้ให้บริการ
Tyler

3
ionic pluginดูเหมือนจะไม่ทำงานอีกต่อไป ionic cordova pluginฉันคิดว่ามันอยู่ในขณะนี้ เช่นionic cordova plugin add --save cordova-plugin-screen-orientation
Rockin4Life33

2
การเพิ่ม<preference name="Orientation" value="portrait" />ดูเหมือนจะเพียงพอสำหรับฉัน
61

2
DevApp กำลังเรียกใช้แอปของคุณเป็น webview ภายในแอป DevApp ดังนั้นคุณสมบัติดั้งเดิมบางอย่างจึงไม่ทำงาน ลองรวบรวมและเรียกใช้แอปของคุณโดยตรงบนอุปกรณ์และควรใช้งานได้
Tyler

13

ตามhttps://cordova.apache.org/docs/en/4.0.0/config_ref/#global-preferences ,

การวางแนวช่วยให้คุณสามารถล็อกการวางแนวและป้องกันไม่ให้อินเทอร์เฟซหมุนเพื่อตอบสนองต่อการเปลี่ยนแปลงการวางแนว ค่าที่เป็นไปได้คือค่าเริ่มต้นแนวนอนหรือแนวตั้ง ตัวอย่าง:

<preference name="Orientation" value="landscape" />

โปรดทราบว่าค่าเหล่านี้คำนึงถึงขนาดตัวพิมพ์คือ "การวางแนว" ไม่ใช่ "การวางแนว"


1
เมื่อคุณเลื่อนขึ้นบนลิงก์ที่คุณให้มาจะระบุสิ่งต่อไปนี้: "แท็ก <preference> ตั้งค่าตัวเลือกต่างๆเป็นคู่ของแอตทริบิวต์ name / value ชื่อของการตั้งค่าแต่ละรายการจะไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ [... ]"
Vadiem Janssens

2
"ปฐมนิเทศ" ได้ผลสำหรับฉัน "การวางแนว" ทำให้ฉันมีหน้าจอสีขาวเมื่อเรียกใช้แอปบนอุปกรณ์จริง
CMA

2
"ปฐมนิเทศ" ใช้ได้กับฉันกับ Ionic 2 ในอุปกรณ์ Android
kamayd

6

หากคุณต้องการทำอะไรบางอย่างในทิศทางของคุณหมายความว่าคุณต้องการดำเนินการใด ๆ เมื่อเปลี่ยนการวางแนวแอปคุณต้องใช้ปลั๊กอินไอออนิกเฟรมเวิร์ก ... https://ionicframework.com/docs/native/screen-orientation/

หากคุณต้องการ จำกัด แอปของคุณในโหมดแนวตั้งหรือแนวนอนคุณต้องเพิ่มบรรทัดต่อไปนี้ใน config.xml ของคุณ

<preference name="orientation" value="portrait" />
                 OR
<preference name="orientation" value="landscape" />

4

ขั้นแรกคุณต้องเพิ่มCordova Screen Orientation Pluginโดยใช้

cordova plugin add cordova-plugin-screen-orientation

แล้วเพิ่มscreen.lockOrientation('portrait');การ.run()วิธีการ

angular.module('myApp', [])
.run(function($ionicPlatform) {

    screen.lockOrientation('portrait');
    console.log('Orientation is ' + screen.orientation);

});
})

2

ภายในเชิงมุมของคุณให้app.jsเพิ่มเส้นตามที่screen.lockOrientation('portrait');แสดงไว้:

an

angular.module('app', ['ionic'])
.run(function($ionicPlatform) {
    // LOCK ORIENTATION TO PORTRAIT.
    screen.lockOrientation('portrait');
  });
})

คุณจะมีรหัสอื่น ๆ ใน.runฟังก์ชันด้วย แต่สิ่งที่คุณสนใจคือบรรทัดที่ฉันเขียน ฉันไม่ได้เพิ่มบรรทัด<preference name="orientation" value="portrait" />ในรหัสของฉัน แต่คุณอาจต้องเพิ่มไฟล์cordova-plugin-device-orientation


2

โปรดเพิ่มandroid:screenOrientation="portrait"ในandroidManifest.xmlไฟล์เป็นแอตทริบิวต์ของแท็กกิจกรรมสำหรับ Android

<activity
        android:name="com.example.demo_spinner.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
</activity>


0

คุณสามารถลองสิ่งนี้: -

ปลั๊กอิน Cordova เพื่อตั้งค่า / ล็อคการวางแนวหน้าจอในลักษณะทั่วไปสำหรับ iOS, Android, WP8 และ Blackberry 10 ปลั๊กอินนี้ใช้เวอร์ชันแรกของ Screen Orientation API ดังนั้น API จึงไม่ตรงกับข้อมูลจำเพาะปัจจุบัน

https://github.com/apache/cordova-plugin-screen-orientation

หรือลองใช้รหัสนี้ใน xml config: -

<preference name="orientation" value="portrait" />
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.