Ваш подход точен, когда у вас есть папки со значениями, большими значениями, малыми значениями, значениями sw600dp, значениями sw720dp, папками sw800dp и т. д. Однако я думаю, что вам не хватает размеров текста в values/dimens.xml values-large/dimens.xml values-small/dimens.xml values-sw600dp/dimens.xml values-sw720dp/dimens.xml values-sw800dp/dimens.xml
.
Например, вы использовали что-то вроде ниже dimens.xml
в ваших значениях/dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="text_size">18sp</dimen>
</resources>
В папке других значений вам нужно изменить значения для вашего размера текста. Также используйте sp
для размера текста, а не px или dp.
Обратите внимание, что values values-large values-small
устаревает после соты.
Вы также можете использовать библиотеку, как предложено в другом ответе. Однако, если вы не хотите использовать дополнительную библиотеку, попробуйте это.
Программно
Вот метод, который преобразует размер dp
в размер в соответствии с размером экрана.
public float convertFromDp(int input) {
final float scale = getResources().getDisplayMetrics().density;
return ((input - 0.5f) / scale);
}
Теперь просто программно присвойте значение textsize.
tvTextView1.setTextSize(convertFromDp(24));
person
Sash_KP
schedule
27.07.2015