Android TextView setTextSize неправильно увеличивает размер текста
Это расширение расширения TextView. getTextSize()
и setTextSize()
не переопределены, я не распространяю эти методы. Программирование в 1.6, уровень API 4.
Цикл в этом коде приводит к тому, что размер умножается на 1,5 при каждом итерации, например. если размер первоначально считывает 200 из getTextSize
, тогда вызывается setTextSize(size)
, вызываемый getTextSize
снова считывает 300.
public void shrinkTest() {
float size = this.getTextSize();
while (size > 8) {
this.setTextSize(size);
size = this.getTextSize();
}
}
Почему это?
Ответы
Ответ 1
Хе, проблема смешанных единиц. Кажется немного нелогичным, но это легко исправить. Метод по умолчанию setTextSize(float)
предполагает, что вы вводите единицы sp
(масштабированные пиксели), а метод getTextSize()
возвращает точный размер пикселя.
Вы можете исправить это, используя альтернативный setTextSize(TypedValue, float)
, например:
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
Это позволит вам работать с одними и теми же блоками.
Ответ 2
setTextSize()
и getTextSize()
работают с разными модулями. Параметр set() не зависит от плотности "масштабированных пикселей", тогда как get() возвращает простые старые пиксели.
Ответ 3
передать единицы измерения с помощью TypedValue, как показано ниже:
TypedValue.COMPLEX_UNIT_PX//Пиксели
TypedValue.COMPLEX_UNIT_SP//Масштабируемые пиксели
TypedValue.COMPLEX_UNIT_DIP//Независимые устройства
setTextSize (TypedValue.COMPLEX_UNIT_SP, 18)