Неправильная папка ресурса выбрана системой 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, как объяснено, чтобы получить разрешение экрана, плотность и семейство макетов (нормальное, большое,...), чтобы быть уверенными в реальных свойствах этого устройства. Производители могут решить установить устройство в другую семью, чем вы ожидаете.

Как я могу получить ScreenSize программно в Android

Другие вопросы по тегам