Как настроить все приложение только в портретном режиме? - PullRequest
196 голосов
/ 19 июля 2011

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

Ответы [ 15 ]

0 голосов
/ 25 февраля 2019

Для пользователей Xamarin:

Если вы расширяете все свои действия до BaseActivity Просто добавьте:

this.RequestedOrientation = ScreenOrientation.Portrait;

Это решит проблему.Если вы хотите, чтобы какая-то конкретная деятельность была в альбомной ориентации, переопределите это в OnActivityCreated.Как:

this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
0 голосов
/ 02 июля 2018

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

public class BaseActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_base);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

и вместо этого расширьте этот классAppCompatActivity, где вы хотите использовать Potrait Mode

public class your_activity extends BaseActivity {}
0 голосов
/ 15 декабря 2017

Вы можете сделать это двумя способами.

  1. Добавить android:screenOrientation="portrait" в свой файл манифеста к соответствующему действию
  2. Добавить setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); к своему действию в `onCreate ()метод
0 голосов
/ 03 июля 2017

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

class InteractiveStoryApplication: Application() {
override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
        override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
            activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
        }

        override fun onActivityPaused(activity: Activity?) {
        }

        override fun onActivityResumed(activity: Activity?) {
        }

        override fun onActivityDestroyed(activity: Activity?) {
        }

        override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
        }

        override fun onActivityStarted(activity: Activity?) {
        }

        override fun onActivityStopped(activity: Activity?) {
        }
    })
}
}

и затем вы должны добавить свой общий базовый класс в AndroidManifest следующим образом:

<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
0 голосов
/ 31 июля 2014

В манифесте введите:

<activity
    android:screenOrientation="portrait"
    <!--- Rest of your application information ---!>
</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...