Подтвердить что ты не робот

Задайте размер текста в .xml или программно

У меня есть переменная at dimens.xml

<resources>
    <dimen name="btn_text_size">12sp</dimen>    
</resources>

И я могу использовать его в файле макета:

 <TextView
           android:textSize="@dimen/btn_text_size"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/dialog_tags_complete"
/>

или программно

tagButton.setTextSize(c.getResources().getDimension(R.dimen.tag_text_size));

Но эти 2 метода дают разные результаты. Я знаю, что getDimension основаны на текущем DisplayMetrics, связанном с ресурсами.

Но что я должен сделать, чтобы сделать эти два способа одинаковыми?

4b9b3361

Ответ 1

setTextSize( float ) ожидает масштабированное значение пикселя. Итак, setTextSize( 12 ) даст вам желаемый результат. Тем не менее, getDimension() и getDimensionPixelSize() возвращают размер в единицах пикселей, поэтому вам нужно использовать вариант с типом setTextSize(), указанный в единицах:

setTextSize( TypedValue.COMPLEX_UNIT_PX, getDimensionPixelSize( R.dimen.tag_text_size ) );

Ответ 2

tagButton.setTextSize(c.getResources().getDimensionPixelSize(R.dimen.tag_text_size));

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

Ответ 3

В настоящее время у меня одно и то же. Установил размер в dimens.xml и применил его программно, что в 3 раза больше, чем при настройке через xml.

Я также проверил:

TextView.getTextSize() = 92f
getResources().getDimension(R.dimen ...) = 92f

TextView.setTextSize(92)!= TextView с размером от XML, другие флаги, такие как TypedValue.COMPLEX_UNIT_PX, делают его еще большим.

По умолчанию setTextSize применяет COMPLEX_UNIT_SP по умолчанию btw. Так что, опять-таки, API Android несовместим, поэтому настройка программно только и адаптация размеров, поэтому они подходят, будет моим решением.

Редактирование: установка размера текста программно в соответствии с Galaxy Note 2 (4.4.2) vs Примечание 4 (5.0.1) приводит к совершенно другому результату -.-