Android не выбирает правильный файл dimens.xml из папки значений

Я создал разные файлы dimens.xml и поместил их в соответствующую папку значений.

У меня есть следующие папки "value"

значения, значения-большие, значения-нормальные, значения-маленькие, значения-sw320dp, значения-sw320dp-land, значения-sw480dp, значения-sw600dp, значения-sw720dp и значения-sw720dp-land

Проблема в том, что когда я устанавливаю приложение на телефон ‹= 5 дюймов, Android выбирает dimens.xml из values-sw320dp. Выбор не зависит от плотности экрана.

Я тестировал приложение на S4, Moto G, S4 Mini и некоторых устройствах 2.3. Результаты везде одинаковые.

Что я здесь делаю неправильно?


person Arif Nadeem    schedule 04.04.2014    source источник
comment
См. stackoverflow.com/questions/16454751/   -  person Infinite Recursion    schedule 04.04.2014
comment
Я могу решить свою проблему, добавив hdpi, xhdpi и xxhdpi к values-sw320dp. Я создал следующие папки values-sw320dp-hdpi, values-sw320dp-xhdpi и values-sw320dp-xxhdpi и добавил соответствующий файл dimens.xml. Теперь правильные размеры выбраны.   -  person Arif Nadeem    schedule 04.04.2014
comment
Отлично :) Да, квалификаторы необходимы, как уже упоминалось. в этом ТАК посте.   -  person Infinite Recursion    schedule 04.04.2014


Ответы (2)


Я не знаю, в чем проблема в том, как вы пытаетесь. Но я всегда создаю папки значений, такие как значения, значения-ldpi, значения-mdpi, значения-hdpi, значения-xhdpi, значения-w360dp-mdpi, значения-w600dp-mdpi и т. д.. Это всегда работает для меня.

person Kanwaljit Singh    schedule 04.04.2014
comment
Цель dp терпит поражение, определяя папку значений с квалификатором плотности. - person Vishal Vijay; 08.02.2018

Что ж, теперь мне ясно, что values-sw320dp будет единственной папкой, из которой будет выбран dimens.xml, поскольку в эту категорию попадают телефоны ‹= 5 дюймов.

Ошибка, которую я совершал, заключалась в том, что я игнорировал плотность экрана для экранов размером 320dp.

Таким образом, решение, которое я нашел, работает, состоит в том, чтобы создавать папки с разными значениями в зависимости от плотности экрана, т.е. создавать папки с именем values-sw320dp-ldpi, values-sw320dp-mdpi, values-sw320dp-hdpi, values-sw320dp-xhdpi and values-sw320dp-xxhdpi и помещать в них соответствующие файлы dimens.xml.

Я надеюсь, что это поможет людям, которые могут наткнуться на эту проблему.

person Arif Nadeem    schedule 07.04.2014
comment
Это не имеет никакого смысла. Размеры экрана и разрешение экрана не совпадают. У вас может быть размер экрана меньше 5 дюймов, но разрешение превышает 320 dp. - person AndroidDev; 28.08.2015
comment
@AndroidDev Пожалуйста, прочитайте мой вопрос еще раз, который я задал. Проблема в том, что когда я устанавливаю приложение на телефон ‹= 5 дюймов, Android выбирает dimens.xml из values-sw320dp. Выбор не зависит от плотности экрана. Я точно знаю, что размер экрана и разрешение не совпадают, но в моем случае конфигурации values-sw480dp были проигнорированы по той причине, что ни один из моих телефонов не имел разрешения выше xhdpi, см. это (ldpi (низкое) ~ 120dpi mdpi (средний) ~160dpi hdpi (высокий) ~240dpi xhdpi (сверхвысокий) ~320dpi) из developer.android.com/guide/practices/screens_support.html - person Arif Nadeem; 28.08.2015
comment
Но я предполагаю, что если вы используете любой современный QHD-телефон, вам придется использовать конфигурации 480dp или 640dp, вы можете защитить свое приложение в будущем, сделав это. - person Arif Nadeem; 28.08.2015