Если у меня есть макет таблицы, скажем, 2 строки и 2 столбца. Каждое поле таблицы квадрантов имеет статический текст, например "box_11", "box_12", "box_21", "box_22". Я хочу, чтобы размер текста был больше для большего экрана и меньше для маленьких экранов. Я хочу, чтобы текст масштабировался в соответствии с размером экрана. Как мне это сделать?
Я думаю, мне следует использовать файл dimens.xml, определяющий: <dimen name="activity_text_size">15sp</dimen>
Тогда я должен использовать android:textSize="@dimen/activity_text_size"
Я вижу, что существуют разные "значения" такие каталоги, как значения, значения-sw600dp, значения-sw720dp_land, значения-v11, значения-v14 в рабочей области моего проекта. В каждом каталоге значений может быть файл dimens.xml. На каком основании выбирается dimens.xml при наличии нескольких файлов?
Android: какой файл dimens.xml выбран для какого размера экрана?
Ответы (2)
Например:
//в dimen.xml(600dp)
<resources>
<dimen name="activity_text_size">15dp</dimen>
</resources>
//в dimen.xml(sw720dp_land)
<resources>
<dimen name="activity_text_size">20dp</dimen>
</resources>
//в dimen.xml(w820dp)
<resources>
<dimen name="activity_text_size">25dp</dimen>
</resources>
и для любого размера экрана вы должны использовать определенный размер dimen.xml (ваш целевой размер) и использовать для него одно и то же имя dimen.name.
Со ссылкой на ссылку @matiash и другой официальный ресурс: - http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch – https://developer.android.com/guide/practices/screens_support.html
«Стандартные» плотности, которые учитываются:
Набор из шести обобщенных плотностей:
ldpi (низкий) ~120 точек на дюйм
mdpi (средний) ~160dpi
hdpi (высокий) ~ 240 точек на дюйм
xhdpi (сверхвысокий) ~320 точек на дюйм
xxhdpi (экстра-экстра-высокий) ~ 480 точек на дюйм
xxxhdpi (экстра-экстра-экстра-высокий) ~640 точек на дюйм
Когда вы создаете приложение с несколькими файлами dimen.xml, выбирается тот, который подходит для данного размера экрана.
Если в случае, когда ресурс не предоставляется для этой конкретной плотности экрана:
Если соответствующий ресурс недоступен, система использует ресурс по умолчанию и масштабирует его по мере необходимости, чтобы он соответствовал текущему размеру и плотности экрана.
Надеюсь, это поможет вам :)