2013-04-29 3 views
2

Я хочу использовать разные размеры шрифта для разных размеров экрана.Размер шрифта для Android на разных экранах

Я читал об этом много статей, но я не уверен в использовании. Является ли правильно использовать другой файл Dimens ресурсов для различных размеров экрана, как код ниже:

res/values/dimens.xml 
res/values-small/dimens.xml 
res/values-normal/dimens.xml 
res/values-xlarge/dimens.xml 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="text_size">18sp</dimen> 
</resources> 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="text_size">24sp</dimen> 
</resources> 
... 

Я также читал, что правильный путь заключается в использовании sp для размера шрифта, но это не подходит шрифту в различных размерах экрана, как я ожидать.

Если есть какие-либо недостатки использования разных размеров для каждого размера?

Благодаря

ответ

1

Самым лучшим способом для создания различных ресурсов макета для каждого из экранов, которые вы хотели бы поддержать. Поместите каждый макет в отдельную папку, обозначающую ширину экрана. Например, макеты нормального размера входят в папку res/layout, а ресурс макета для 7-дюймового планшета (ширина 600 пикселей) будет находиться в папке res/layout-sw600dp. Сделайте имена ресурсов одинаковыми, но соответствующим образом настройте размер шрифта.

+0

Если вы делаете это только для того, чтобы реализовать изменения в размерах шрифтов, вы получите массу повторяющихся AXML без каких-либо причин, которые вы должны будете поддерживать каждый раз при изменении пользовательского интерфейса. Dimens в сочетании с линейными макетами выглядит менее трудоемким. –

0

@up Нет, это нехороший способ.

@topic Вы можете получить ширину & высота экрана (и w & h взгляда). Затем вы можете установить шрифт, например, 2% экрана ширины. Если у вас есть контент 1260x720, 0.02 * 1260 = 24,6 px (вы можете использовать также (int) 24.6 для преобразования double в int)

0

Я делаю что-то очень похожее, и это отлично работает для меня. Некоторые люди помещают значения в различные макеты, например, предложенные Fietser, но если все ваши макеты заканчиваются тем же, за исключением размера шрифта, ваш подход лучше. Таким образом, вы можете иметь один макет и изменять размер шрифта. Но иногда у вас могут быть изменения в фактическом макете xml, так что это, вероятно, стирка между двумя подходами.

Смежные вопросы