Эмулятор Android: layout-land не распознается таблицами, но работает правильно с телефонами и ТВ-эмуляторами - PullRequest
0 голосов
/ 19 сентября 2019

Это наблюдалось в Android Emulator 29.1.13 и сохраняется после обновления до версии 29.2.0.

Приложение имеет два действия: запуск и второе, вызываемое при запуске.Оба действия объявлены в AndroidManifest как

android: configChanges = "клавиатура | клавиатура скрытая | ориентация | screenSize | screenLayout"

android:screenOrientation опущена (пробная screenOrientaition="sensor", screenOrientation="unspecified" и т. Д. -та же проблема), auto-rotate screen включен в настройках эмулятора.

Существуют разные макеты для книжной и альбомной ориентации, указанные в res / layout (пробовал res/layout-port - без изменений в поведении) и res/layout-land,Чтобы справиться с изменением ориентации, оба действия переопределяют onConfigurationChanged.

Что-нибудь еще, что может вызвать ваши мгновенные комментарии?Если нет, давайте продолжим:)

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

Что-то странное происходит с эмуляторами планшетов (Pixel C, Nexus 9, пробовал даже 7-дюймовый WSVGA с более старыми API). В альбомном режиме - начальная активностьвыбирает правильную (альбомную) ориентацию, но использует макет для портрета, даже если поле orientation в конфигурации (getResources().getConfiguration()) имеет значение 2 (Configuration.ORIENTATION_LANDSCAPE). Это происходит либо при запуске приложения в режиме lansdcape, либо при переключении в альбомную ориентацию.Для чистого эксперимента я запустил приложение со всем закомментированным кодом активности, кроме setContentView - та же проблема.

Удивительно, но второе действие всегда получает правильный макет.

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

...