Как мне установить, чтобы приложение работало только в портретном режиме? Я хочу, чтобы ландшафтный режим был отключен во время работы приложения. Как мне сделать это программно?
201
Вы можете указать android:screenOrientation="portrait"
для каждого действия в вашем файле manifest.xml. Вы не можете указать эту опцию в application
теге.
Другой вариант - сделать это программно, например, в Activity
базовом классе:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Последний вариант - сделать это со слушателями жизненного цикла активности, которые доступны только с Android 4.0 (API 14+). Все происходит в пользовательском Application
классе:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter
это просто вспомогательный класс, который вам нужно создать, который будет пустой реализацией ActivityLifecycleCallbacks
(поэтому вам не нужно переопределять все методы этого интерфейса, когда вам просто нужен один из них).
Да, вы можете делать это как программно, так и для всех ваших действий, создавая AbstractActivity, который расширяет все ваши действия.
Эта абстрактная деятельность также может быть использована для глобального меню.
источник
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
должен быть лучший ответ, потому что он предназначен для того, чтобы оставить устройство в состоянии по умолчанию, потому что некоторые устройства не имеют книжной ориентации. Однако «nosensor» НЕ работает для меня, поэтому ответ @ arcone означает меня.Вы можете сделать это для всего приложения, не заставляя все ваши действия расширять общий базовый класс.
Сначала нужно убедиться, что вы включили
Application
подкласс в свой проект. В своей программеonCreate()
, которая вызывается при первом запуске приложения, вы регистрируетеActivityLifecycleCallbacks
объект (уровень API 14+) для получения уведомлений о событиях жизненного цикла активности.Это дает вам возможность выполнять свой собственный код всякий раз, когда какая-либо активность в вашем приложении запускается (или останавливается, или возобновляется, или как угодно). На данный момент вы можете позвонить
setRequestedOrientation()
на вновь созданную деятельность.источник
Вы можете установить это в своем файле манифеста ..
и вы также можете добиться того же, написав код в вашем файле класса, например:
источник
Добавьте android: screenOrientation = "Portrait" к действию в AndroidManifest.xml. Например:
источник
Использование:
Просто напишите эту строку в файле манифеста вашего приложения в каждом упражнении, которое вы хотите показывать только в портретном режиме.
источник
Запишите это в свой файл манифеста для каждого вида деятельности:
источник
Как из руководства разработчика Android:
Итак, в файле AndroidManifest.xml мы можем поместить:
источник
Добавление
<preference name="orientation" value="portrait" />
под<widget>
в моем config.xml работал для меня.(Другие решения не работали на моем устройстве, были перезаписаны во время сборки или выдавали ошибки устаревания во время процесса сборки.)
источник
В файле манифеста, какое действие вы хотите использовать в «портрете», вы должны написать этот код в теге «Деятельность».
как это
но если вы хотите экран в ландшафте, используйте этот код, как это
источник
источник
Если кому-то интересно, как вы могли бы сделать это для всего приложения, не заставляя все ваши действия расширять общий базовый класс в Kotlin , см. Пример ниже:
а затем вы должны добавить свой общий базовый класс в AndroidManifest следующим образом:
источник
Вы можете сделать это двумя способами.
android:screenOrientation="portrait"
в свой файл манифеста к соответствующей деятельностиsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
к своей деятельности в методе `onCreate ()источник
Аналогично ответу Грэма Борланда ... но, кажется, вам не нужно создавать класс Application, если вы не хотите ... просто создайте базовую активность в своем проекте
И расширить этот класс вместо AppCompatActivity, где вы хотите использовать режим Potrait.
источник
Для пользователей Xamarin:
Если вы расширяете все свои действия на
BaseActivity
Просто добавьте:Это решит проблему. Если вы хотите, чтобы какая-то конкретная деятельность была в ландшафте, переопределите это в
OnActivityCreated
. Так как:источник
В своем манифесте введите это:
источник