Изменить размер шрифта во время выполнения Android - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть один textview, и он имеет размер 32sp в xml.

android:textSize="32sp"

Я хотел изменить его как 28sp программно.Поэтому я использовал следующий код.

txt.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.twenty_eight_sp));

Но приведенный выше код добавляет 28sp к 32sp.Таким образом, шрифт стал слишком большим.Я не хочу добавлять размер шрифта, я хочу установить новый размер шрифта.

Может кто-нибудь предложить мне.

Ответы [ 5 ]

0 голосов
/ 31 декабря 2018

Попробуйте это

txt_home.setTextSize(12);
0 голосов
/ 16 ноября 2018

Вы можете изменить размер шрифта во время выполнения следующим образом:

text.setTextSize(TypedValue.COMPLEX_UNIT_PX, 
       getResources().getDimension(R.dimen.result_font));

ИЛИ

Полный код для изменения TextSize во время выполнения, совместимый для любого размера экрана:

 text.setTextSize(TypedValue.COMPLEX_UNIT_PX, DetermineTextSize
            .determineTextSize(text.getTypeface(),
                    setTextHeight);

defineTextSize () метод, вызванный из DetermineTextSize класс:

DetermineTextSize.class

public class DetermineTextSize {

public static int determineTextSize(Typeface font, float allowableHeight) {

    Paint p = new Paint();
    p.setTypeface(font);

    int size = (int) allowableHeight;
    p.setTextSize(size);

    float currentHeight = calculateHeight(p.getFontMetrics());

    while (size != 0 && (currentHeight) > allowableHeight) {
        p.setTextSize(size--);
        currentHeight = calculateHeight(p.getFontMetrics());
    }

    if (size == 0) {
        return (int) allowableHeight;
    }
    return size;
}

private static float calculateHeight(FontMetrics fm) {
    return fm.bottom - fm.top;
}
}
0 голосов
/ 16 ноября 2018

Вы должны изменить его на TypedValue.COMPLEX_UNIT_PX, потому что getDimension(id) возвращает значение dimen из ресурсов и неявно преобразуется в px.

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 
           getResources().getDimension(R.dimen.result_font));
0 голосов
/ 16 ноября 2018

проверьте эту ссылку https://developer.android.com/reference/android/widget/TextView#setTextSize(int,%20float)

рассмотрите обе функции согласно вашему требованию

enter image description here

0 голосов
/ 16 ноября 2018
txt.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.twenty_eight_sp));
...