android - Establecer el tamaño del texto en.xml o programáticamente
dimensions (3)
Tengo variable en dimens.xml
<resources>
<dimen name="btn_text_size">12sp</dimen>
</resources>
Y puedo usarlo en el archivo de diseño:
<TextView
android:textSize="@dimen/btn_text_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dialog_tags_complete"
/>
o programáticamente
tagButton.setTextSize(c.getResources().getDimension(R.dimen.tag_text_size));
Pero estos 2 métodos dan resultados diferentes. Sé que getDimension
se basa en los DisplayMetrics actuales asociados con los recursos.
Pero, ¿qué debo hacer para que este 2 maneras se vea igual?
Actualmente tengo lo mismo. Estableció una dimensión en dimens.xml y la aplicó de manera programática, que es 3 veces más grande que cuando se configuraron a través de xml.
Revisé también:
TextView.getTextSize() = 92f
getResources().getDimension(R.dimen ...) = 92f
TextView.setTextSize (92)! = TextView con tamaño desde XML, otras marcas como TypedValue.COMPLEX_UNIT_PX lo hacen aún más grande.
El setTextSize predeterminado aplica COMPLEX_UNIT_SP por defecto por cierto. Así que, una vez más, la API de Android es inconsistente, por lo que la configuración solo es programática y adapta los tamaños, para que se ajusten, será mi solución.
Edición: establecer el tamaño del texto mediante programación en Galaxy Note 2 (4.4.2) vs Note 4 (5.0.1) conduce a un resultado totalmente diferente -.-
setTextSize( float )
espera un valor de píxel escalado. Entonces, setTextSize( 12 )
le dará el resultado deseado. Sin embargo, getDimension()
y getDimensionPixelSize()
devuelven el tamaño en unidades de píxeles, por lo que necesita usar la variante de setTextSize()
como unidad de la siguiente manera:
setTextSize( TypedValue.COMPLEX_UNIT_PX, getDimensionPixelSize( R.dimen.tag_text_size ) );
tagButton.setTextSize(c.getResources().getDimensionPixelSize(R.dimen.tag_text_size));
esto funcionará bien :) También debe recordar que textView tiene un setTextSize (unidad int, tamaño flotante), que debe usarse al configurar el tamaño desde el código pero no desde xml dimen.