Отключить пейзаж на HDPI, но не на ландшафте по умолчанию - PullRequest
2 голосов
/ 10 марта 2012

У меня есть приложение, и проблема в том, что оно должно поддерживать планшеты и телефоны.Однако на планшетах вы можете использовать ландшафт вместо портрета, потому что он достаточно большой, чтобы отобразить все.Однако на телефоне это все портит, потому что экран слишком маленький.

Я хотел отключить альбомную ориентацию для телефонов, а не для планшетов.

Я вижу, что вы можете определить портрет в файле manifest.xml, но возможно ли его отключить в зависимости от макета xml?

Например:

-телефоны используют layout-hdpi -tablets по умолчанию для layout

Если устройство использует layout-hdpi, то должен быть включен только портрет, в противном случае он может идтив ландшафт.

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Я сделал это следующим образом:

  • в манифесте в качестве типа screenOrientation: "@ integer / screenOrientation"
  • для телефона (если вы хотите портрет) установить значение screenOrientation в "1"
  • для планшета (если вы хотите альбомную ориентацию) установите значение screenOrientation в" 0 "

Это значение взято из source sdk , поэтому, если вы хотите другое, проверьте егоout (ищите экранную ориентацию по этой ссылке).

Надеюсь, это решение поможет вам.

0 голосов
/ 01 апреля 2013

Альтернатива ответу, данному @pjanecze, заключается в следующем:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Я вызываю это в моем базовом методе Activity onCreate. По какой-то причине метод манифеста не работал для меня.

Некоторые пользователи сообщают о проблемах с игнорированием приведенного выше кода, однако это можно исправить, сначала установив запрашиваемую ориентацию на что-то другое:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...