Звонок TextView.setTextSize()
работает ненормально. Сразу после вызова, setTextSize
если мы получаем, он getTextSize
возвращает гораздо более высокое значение, чем то, что мы установили ранее.
Вот что мы делаем:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Кто-нибудь видел это раньше?
Ответы:
Разница здесь в том, что в этом
setTextSize(int size)
методе тип единиц измерения по умолчанию - «sp» или «масштабированные пиксели». Это значение будет разным размером пикселя для каждой плотности экрана (ldpi, mdpi, hdpi).getTextSize()
, с другой стороны, возвращает фактические размеры текста в пикселях.Вы можете использовать
setTextSize(int unit, float size)
для указания типа юнита. Постоянные значения для этого можно найти в классе TypedValue, но некоторые из них:источник
эта проблема возникла из-за того, что
getTextSize()
метод, возвращающий размер в пикселях, зависит от плотности экрана! чтобы получить фактический размер текста, используйте это:Надеюсь, это решит проблему :)
источник
setTextSize(int unit, float size)
。если Настройка изменить размер шрифта , что-то вызывает ошибку показа , вы можете сделать как :
источник
DIP
?Когда мы пытаемся программно решить проблему setText () с getTextSize (), возвращает значение в пикселях вместо sp / dp / dip, и мы знаем, что 1sp / dp = 1.5px (размер экрана = 240).
отлично работает для меня, или мы можем использовать displaymatrix для отношения px: sp / dp, а затем заменить это значение на 1.5f
источник
После долгого времени поразил это и, наконец, решил вот так
создайте папку dimen, подобную этой res / values / sizes.xml
источник
Короче говоря, если вы хотите уменьшить размер текста
Поскольку getTextSize () возвращает UNIT_PX, мы должны использовать UNIT_PX
источник
Котлин Решение
Чтобы установить использование ресурса, просто используйте это:
Чтобы сделать то же самое со значением ресурса, добавьте это свойство расширения, чтобы намного упростить установку размера текста.
источник
Добавление некоторого дополнительного вкуса к этому ответу, а также небольшая путаница. Вы должны иметь возможность перенести этот тест в любой
@RunWith(AndroidJUnit4.class)
тест, который есть в вашем проекте (вам также нужно будет добавить размеры в свой файл sizes.xml).Примечание: все тесты проходят успешно.
Большой вывод, который я обнаружил, заключается в том, что
TextView.setTextSize(float)
применяется масштабирование шрифта , поэтому, если вы передадите размер, который уже помечен как SP, вместо DP, тогда он получит масштабирование шрифта. дважды .источник