2013-05-30 3 views
1

Для моего приложения мне нужно зафиксировать ориентацию на портрет на телефонах и разрешить портрет и пейзаж на планшетах. Я просмотрел ответы here, но я хочу попытаться сделать то же самое с помощью xml. я попытался добавить следующую строку в моем манифестеДеятельность не правильная ориентация

<activity 
android:theme="@style/Theme.ActionBarLargeTitle" 
android:name="com.work.activities.MyActivity" 
android:screenOrientation="@integer/orientation_supported" 
android:exported = "false"/> 

В разрешении/значение/dimens.xml я добавил следующую строку (1 соответствует портрету)

<integer name="orientation_supported">1</integer> 

я создал еще один файл, Рез /values-sw600dp/dimens.xml, в котором я добавил (-1 соответствует неопределенные)

<integer name="orientation_supported">-1</integer> 

на телефоне этот код работает отлично, и активность всегда находится в портретном режиме. На Nexus 10" Tablet (ширина 800dp) это не удается, и она фиксируется в портретном режиме Есть что-нибудь не так с этим подходом

EDIT:.? Я проверил с различными значениями и во всех случаях (во всех устройствах) значение полученное из res/values ​​/ dimens.xml. Если это значение отсутствует, появляется ошибка, когда приложение установлено «Ошибка установки: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION».

+0

Вы добавили экраны поддержки в манифесте http://developer.android.com/guide/topics/manifest/supports-screens-element.html – Raghunandan

+0

также проверьте это. http://developer.android.com/guide/practices/screens_support.html. Я не понимаю, что вы делаете с res/values-sw600dp/dimens.xml. В документе указывается, что вам необходимо предоставить различные чертежи и макеты. – Raghunandan

+0

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

ответ

1

Вопрос в том, что вы используете квалификатор -sw600dp, который на самом деле не проверяет ориентацию, а скорее проверяет, что самая короткая сторона составляет не менее 600dp. Вместо этого используйте -land или -port.

0

Есть два возможных проблем здесь:

  • Убедитесь, что планшет читает из -sw600dp папки. Я знаю, это может показаться странным для устройства 800dp. Легкий способ проверить - добавить строку с тем же ключом в обе папки и отобразить в TextView.
  • Убедитесь, что ваш планшет понимает значение -1. Телефон, который я проверил, сделал. Попробуйте перейти на 0 и посмотреть, не заставляет ли он пейзаж.
+0

Таблетка считывает строки из -sw600dp. Также планшет правильно понимает значение «-1». – yagnasri

Смежные вопросы