TextSize для разных устройств с разным размером?

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

значения значения-большие значения-малые значения-sw600dp значения-sw720dp значения-sw800dp


person Bincy Baby    schedule 27.07.2015    source источник


Ответы (2)


Попробуйте эту библиотеку, она может вам помочь. CommonTextSize

В вашем макете добавьте вот так, чтобы указать размер android:textSize="@dimen/_15sdp"

person Aerrow    schedule 27.07.2015
comment
@BincyBaby: спасибо этому разработчику за такое замечательное решение :) - person Aerrow; 27.07.2015

Ваш подход точен, когда у вас есть папки со значениями, большими значениями, малыми значениями, значениями 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
comment
У меня есть размер в dp во всем xml-файле. - person Bincy Baby; 27.07.2015
comment
Пожалуйста, попробуйте и программное решение, если вы имеете дело с динамическими текстами. Вы также можете попробовать библиотеку, упомянутую в другом ответе. - person Sash_KP; 27.07.2015