Как установить размер текста textview динамически для разных экранов [дубликат]



этот вопрос уже есть ответ здесь:




  • TextView.setTextSize ведет себя ненормально - как установить размер текста textview динамически для разных экранов

    6 ответов



Я создаю textview и добавляю в макет динамически. Я использую textView.setTextSize(18) метод для установки размера текста.Я протестировал его на планшете samsung и обнаружил, что размер шрифта слишком мал для этого экрана, тогда я изменил размер текста на 25, но он слишком велик для эмулятора(480*800). Моя проблема заключается в том, чтобы установить размер текста динамически, так что он подходит для всех экранов.

191   7  

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

    Ничего не найдено.