Как установить размер текста textview динамически для разных экранов [дубликат]
этот вопрос уже есть ответ здесь:
TextView.setTextSize ведет себя ненормально - как установить размер текста textview динамически для разных экранов
6 ответов
Я создаю textview и добавляю в макет динамически. Я использую textView.setTextSize(18) метод для установки размера текста.Я протестировал его на планшете samsung и обнаружил, что размер шрифта слишком мал для этого экрана, тогда я изменил размер текста на 25, но он слишком велик для эмулятора(480*800). Моя проблема заключается в том, чтобы установить размер текста динамически, так что он подходит для всех экранов.
7 ответов:
вы должны использовать папки ресурсов, такие как
values-ldpi values-mdpi values-hdpiи пишем размер текста в размерах.XML-файл для каждого диапазона.
и в коде java вы можете установить размер текста с
textView.setTextSize(getResources().getDimension(R.dimen.textsize));образец размеры.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="textsize">15sp</dimen> </resources>
изменить: И как я ищу на StackOverflow теперь я нашел этот вопрос является дубликатом:этой и этой
нужно использовать другую функцию
setTextSize(unit, size)блокSPкак этоtv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f);пожалуйста, подробнее для TypedValue константы.
там, вероятно, нет необходимости использовать
ldpi,mdpiилиhdpiотбор в данном случае.при определении измерения в файле ресурсов вы включаете единицу измерения. Если вы используете sp-единицы, они масштабируются в соответствии с плотностью экрана, поэтому текст на 15sp должен отображаться примерно одинакового размера на экранах разной плотности.
(реальная плотность экрана устройства не будет точно соответствовать, как Android обобщает плотность экрана в120, 160, 240, 320, 480 and 640 dpiгруппы.)при вызове
getResources().getDimension(R.dimen.textsize)он вернет размер в пикселях. Если через СП, то это позволит увеличить плотность экрана,вызов
setText(float)задает размер вsp units. Вот где проблема,
я.е у вас есть измерения пикселей на одной руке иsp unitС другой стороны, чтобы исправить это:textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));Примечание Вы также можете использовать
getResources().getDimensionPixelSize(R.dimen.textSize);вместо
getDimension()и он будет округляться и преобразовываться в не дробный значение.
после долгого времени ударил это и, наконец, решил, как это
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));создать
В Стиле.XML-файле предварительно определиться со стилем:
<style name="largeText"> <item name="android:textAppearance">@android:style/TextAppearance.Large.Inverse</item> <item name="android:textStyle">bold</item> </style>в коде:
text.setTextAppearance(context, R.style.largeText);
Я думаю, что вы должны использовать textView.метод setTextSize (float size) для установки размера текста. поле TextView.setText (arg) используется для установки текста в текстовом представлении.
float currentSize = textEdit.getTextSize(); // default size float newSize = currentSize * 2.0F; // new size is twice bigger than default one textEdit.setTextSize(newSize);
Comments