Вычитание поплавка в Android дает мне большее число - PullRequest
0 голосов
/ 27 декабря 2011

Я не могу понять это, но я не могу заставить Android когда-либо сотрудничать с простой математикой.Я создал ZoomControls, который изменяет размер текста TextView.Кажется простым.Я увеличиваю размер шрифта без проблем.Вычитание просто добавляет его по какой-то странной причине.

zoom.setOnZoomOutClickListener(new View.OnClickListener() {
    public void onClick(View v) {
       float val = songtext.getTextSize();
       float test = (val - 1);
       songtext.setTextSize(test);
    }
});

Судя по этому простому коду, размер шрифта должен быть вычтен на 1 при каждом нажатии кнопки.Вместо этого оно увеличивается на 1. ???Я рву волосы.

1 Ответ

0 голосов
/ 20 февраля 2012

Разница в том, что в методе setTextSize (int size) типом единицы по умолчанию является sp или масштабированные пиксели.Это значение будет различным размером в пикселях для каждой плотности экрана (ldpi, mdpi, hdpi).

getTextSize (), с другой стороны, возвращает фактические размеры текста в пикселях.

Вы можете использовать setTextSize (int unit, int size), чтобы указать тип блока.Значения для этого можно найти в классе TypedValue, но некоторые из них:

TypedValue.COMPLEX_UNIT_PX: пиксели

TypedValue.COMPLEX_UNIT_SP: масштабированные пиксели

TypedValue.COMPLEX_: Независимые от устройства пиксели

Как объяснено в TextView.setTextSize ведет себя ненормально - Как динамически установить размер текста textview для разных экранов с помощью kcoppock

Я просто использовалниже:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,size + increaseTextBy);

...