Неправильная папка ресурса выбрана системой Android
У меня были проблемы с моим приложением на 7-дюймовом устройстве. В целях отладки я добавил всплывающее сообщение, которое отображается после загрузки приложения, чтобы сообщить мне, какую папку ресурсов использует приложение, т.е. какие классификаторы. У меня есть файлы strings.xml в каждой из следующих папок ресурса:
ценности
Значения-нормальные
Значения-большие
Значения-XLarge
Значения-sw600dp
Значения-sw720dp
Содержимое строки, используемой для сообщения о тосте, зависит от папки, в которой находится строка. У меня также есть шесть папок макета с теми же квалификаторами, что и выше, и у меня есть действительные файлы макета XML во всех шести папках макета. Мое приложение отлично работает на "обычных" экранах и экранах 10-дюймовых планшетов.
Проблемное 7-дюймовое устройство (моего приятеля) - это дешевый "Audiosonic" под управлением Android 4.1.1. По-видимому, разрешение составляет 800x480, а минимальная физическая ширина экрана составляет 86 мм, или 3,4 дюйма. Это означает 142 точек на дюйм.
Учитывая уравнение
дп = (пикселей х 160) / точек на дюйм
Наименьшая ширина должна быть 541dp.
Теперь вот и сумасшедшая часть, и мой вопрос... с какой стати ресурсы sw720dp (layout и strings) используются моим приложением на этом 7-дюймовом устройстве?!
1 ответ
Проверьте этот ответ и используйте классы Configuration и Display, как объяснено, чтобы получить разрешение экрана, плотность и семейство макетов (нормальное, большое,...), чтобы быть уверенными в реальных свойствах этого устройства. Производители могут решить установить устройство в другую семью, чем вы ожидаете.