В дополнение к общей папке res/layout
у меня есть res/layout-v3
папка для обратной совместимости с Android 1.5, в которой есть проблемы
с некоторыми RelativeLayout
макетами.
Отлично работает со всеми моделями телефонов и эмуляторов
далеко. За исключением 2.1 (эмулятор и Nexus One). Они выбирают для отображения
макет Android 1.5 (res/layout-v3
) вместо стандартного res/
layout
.
Может ли кто-нибудь еще это подтвердить? Это ошибка ОС Android? Если да, то где
лучшее место для отправки сообщения об ошибке?
UPDATE:
После прочтения https://developer.android.com/guide/practices/screens_support.html#qualifiers еще раз (спасибо Марку за подсказку), особенно эту часть
Ресурсы, предназначенные только для использования на
определенный уровень API или выше. За
Например, если ваше приложение
предназначен для работы на обоих Android 1.5
(API Level 3) и Android 1.6 (API
Уровень 4 и выше), вы можете использовать
-v4 квалификатор для обозначения любых ресурсов, которые должны быть исключены при
приложение работает на Android 1.5
(Уровень API 3).
Я изменил свой порядок размещения с
- res / layout-v3 (только для Android 1.5 -> это ошибочное предположение, которое я сделал)
- res / layout (для всего остального)
к моей новой конфигурации, имеющей:
- res / layout-v4 (для Android 1.6 и выше)
- res / layout (для всего остального -> в данном случае это будет только Android 1.5)
Если я правильно понимаю приведенную выше документацию и если мои предположения в скобках верны, на этот раз это должно сработать. Тем не менее, результат следующий:
- Android 1.5 использует res / layout -> OK
- Android 1.6 использует res / layout-v4 -> OK
- Android 2.0 использует res / layout -> НЕ ОК
- Android 2.1 использует res / layout-v4 -> OK
Так почему же Android 2.0 (как на Emulator, так и на Motorola Milestone) не выбирает правильную папку ресурсов макета?
Затем я проверил его снова с 2.0.1, и, похоже, он там работает. Так что это похоже на ошибку в 2.0, которая была исправлена в 2.0.1
Но теперь самое странное: чтобы он как-то работал на 2.0, я скопировал папку res / layout-v4 в res / layout-v5, чтобы заставить Android 2.0 использовать этот ресурс макета. Не сработало Но затем я попытался скопировать его в res / layout-v6 (который должен быть Android 2.0.1) и вуаля, вдруг он работает с 2.0. Очень странно! Но я надеюсь, что этот обходной путь поможет другим людям.