Увеличение размера текста не работает в Android - PullRequest
0 голосов
/ 06 апреля 2020

Недавно я написал приложение Android для проверки настроек шрифта. Там я поместил две кнопки, чтобы увеличить или уменьшить размер текста EditText. Вот мой код: (Я поместил операторы Log для целей отладки.)

public void incSize(View v) {
    float size=e.getTextSize();
    Log.v("Size b4 inc", String.valueOf(size));
    e.setTextSize(size+1f);
    size=e.getTextSize();
    Log.v("Size after inc", String.valueOf(size));
}

public void decSize(View v) {
    float size=e.getTextSize();
    Log.v("Size b4 dec", String.valueOf(size));
    e.setTextSize(size-1f);
    size=e.getTextSize();
    Log.v("Size after dec", String.valueOf(size));
}

Я обнаружил, что размер текста продолжает увеличиваться, даже когда вызывается метод decSize().
Здесь logcat, когда вызывается decSize():

2020-04-06 18:47:51.555 27276-27276/com.mapsup.customfonts V/Text size: 21.0
2020-04-06 18:47:51.556 27276-27276/com.mapsup.customfonts V/Text size: 23.0

Вот logcat, когда вызывается incSize():

2020-04-06 18:47:54.072 27276-27276/com.mapsup.customfonts V/Text size: 23.0
2020-04-06 18:47:54.072 27276-27276/com.mapsup.customfonts V/Text size: 27.599998

Почему это происходит и как это исправить?

1 Ответ

1 голос
/ 06 апреля 2020

Это происходит потому, что по умолчанию getTextSize() возвращает размер текста в пикселях, а setTextSize() устанавливает размер текста в масштабированных пикселях.

Вы должны установить и получить размер текста с той же единицей измерения. Вы можете использовать setTextSize(TypedValue.COMPLEX_UNIT_PX, size) вместо setTextSize(size), поэтому размер текста будет установлен и вы получите px.

...