Отключить ландшафтный режим в Android? - PullRequest
877 голосов
/ 24 февраля 2009

Как отключить ландшафтный режим для некоторых видов в моем приложении для Android?

Ответы [ 32 ]

4 голосов
/ 16 января 2017

Вы можете заставить свою конкретную деятельность всегда оставаться в портретном режиме, написав это в своем manifest.xml

 <activity android:name=".MainActivity"
        android:screenOrientation="portrait"></activity>

Вы также можете заставить свою деятельность оставаться в пострайтовом режиме, написав следующую строку в методе onCreate () своей деятельности

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}
3 голосов
/ 05 апреля 2018

Вы можете сделать это для всего приложения, не заставляя все ваши действия расширять общий базовый класс.

Сначала нужно убедиться, что вы включили подкласс Application в свой проект. В его onCreate (), вызываемом при первом запуске приложения, вы регистрируете объект ActivityLifecycleCallbacks (уровень API 14+) для получения уведомлений о событиях жизненного цикла активности.

Это дает вам возможность выполнять свой собственный код всякий раз, когда какая-либо активность в вашем приложении запускается (или останавливается, или возобновляется, или как угодно). В этот момент вы можете вызвать setRequestedOrientation () для вновь созданного действия.

И не забудьте добавить app: name = ". MyApp" в файл манифеста.

class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();  

        // register to be informed of activities starting up
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

            @Override
            public void onActivityCreated(Activity activity, 
                                          Bundle savedInstanceState) {

                // new activity created; force its orientation to portrait
                activity.setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
            ....
        });
    }
}
3 голосов
/ 04 сентября 2012
<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity android:name=".MyActivity" 
                android:screenOrientation="portrait" 
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>
2 голосов
/ 19 сентября 2011

В каталоге <apphome>/platform/android создан AndroidManifest.xml (копируется из созданного каталога). Затем добавьте android:screenOrientation= "portrait" ко ВСЕМ элементам деятельности.

2 голосов
/ 01 февраля 2012

Добавить android:screenOrientation="portrait" в AndroidManifest.xml файл.

Например:

<activity android:name=".MapScreen" 
 android:screenOrientation="portrait"></activity>
2 голосов
/ 27 декабря 2018

Добавьте ниже похвалы за ваш проект,

установка в минуту

нпм я реагирую-нативный-ориентация-шкафчик

тогда вы используете класс манифеста как, React_Native (папка вашего проекта) / Android / приложение / SRC / главная / AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <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>

Спасибо!

2 голосов
/ 26 июля 2017
 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="in.co.nurture.bajajfinserv">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>


    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

мы можем ограничить активность в портретном или ландшафтном режиме, используя атрибут android: screenOrientation.

если в моей программе более одного вида деятельности, тогда у вас есть свобода ограничить любое действие в любом режиме, и это никогда не повлияет на другие, которые вам не нужны.

1 голос
/ 13 мая 2018

Либо в классе манифеста.

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

или программно

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Примечание: Вы должны вызвать его до setContentView метода для вашей активности в onCreate().

1 голос
/ 06 февраля 2018

у меня сработало, попробуйте добавить этот код в файл AndroidManifest

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme">
        ....
        ....
        </application>
1 голос
/ 11 июня 2017

В котлине то же самое можно программно достичь, используя ниже

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
...