Принятый ответ для жестов, а не для установки размера текста.Ответ с наибольшим количеством голосов (на момент написания этой статьи) близок, но в документации рекомендуется использовать sp
вместо dp
, поскольку в дополнение к масштабированию для плотности экрана (как и значения dp
), sp
- этотакже масштабируется в соответствии с предпочитаемыми пользователем размерами шрифта.
Из int
в коде
int spSize = 17;
float scaledSizeInPixels = spSize * getResources().getDisplayMetrics().scaledDensity;
mTextPaint.setTextSize(scaledSizeInPixels);
Или альтернативно
int spSize = 17;
float scaledSizeInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
spSize, getResources().getDisplayMetrics());
mTextPaint.setTextSize(scaledSizeInPixels);
Из ресурсов
Или, если у вас есть sp
или dp
значение в ресурсах:
<resources>
<dimen name="fontSize">17sp</dimen>
</resources>
с
float scaledSizeInPixels = getResources().getDimensionPixelSize(R.dimen.fontSize);
mTextPaint.setTextSize(scaledSizeInPixels);
Другие ссылки