Android: поворот на ландшафт - PullRequest
0 голосов
/ 26 июля 2011

У меня есть приложение Android с действием, которое обрабатывает изменение ориентации (android:configChanges="keyboardHidden|orientation" в манифесте). Он также имеет обработчик onConfigurationChanged, который вызывает суперкласс.

После поворота устройства активность остается в портретном режиме. И весь экран находится в странном состоянии, где ось X физически движется снизу вверх, ось Y движется слева направо, строка состояния проходит вдоль левого края экрана, а весь текст физически вверх. Это как если бы система была вынуждена не признать изменение ориентации.

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

Вопрос - как мне сказать системе переключать физическую ориентацию, чтобы оси XY шли так, как должны?

РЕДАКТИРОВАТЬ: и вот любопытная точка данных: во всех вызовах onConfigChanged newConfig.orientation равен 1.

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

Атрибут android:screenOrientation="portrait" в манифесте был виноват. При наличии этого атрибута, даже если система перезапустит действие, это не переключит экран в истинный ландшафтный режим.

0 голосов
/ 26 июля 2011

Вы действительно не должны использовать android:configChanges.Эта техника считается последним средством.Пожалуйста, прочитайте Handling Runtime Changes для получения более подробной информации.

Краткое объяснение: если вы использовали android:configChanges, вы несете ответственность за обработку события изменения конфигурации и перезагрузите ресурсы пользовательского интерфейса дляновая конфигурация.Когда вызывается onConfigurationChanged(), getResources() уже указывает на правильные ресурсы из новой конфигурации.Вам нужно только вручную переустановить все макеты, строки, размеры, элементы рисования и т. Д. С новыми (потенциально измененными) значениями.


Вы также не упомянули причины, по которым вы решили использовать configChanges, вместо обычного рабочего процесса Activity.Это могло бы быть полезно, чтобы дать вам несколько альтернатив.

...