Establecer el tamaño del texto en .xml o mediante programación
Tengo variable en dimens.xml
<resources> <dimen name="btn_text_size">12sp</dimen> </resources>
Y puedo usarlo en el archivo de diseño:
- ¿Cómo puedo obtener el tamaño de la ventana de la aplicación Android y no el tamaño de la pantalla física?
- Class Dimension para java en android
- Android ConstraintLayout @dimens reemplazado con valores codificados
- Vista previa de Android Studio Designer no muestra las dimensiones correctas
- Icono de Android Launcher Rincón de esquina redondeado Radii
<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 el DisplayMetrics actual asociado con los recursos.
Pero ¿qué debo hacer para que esta 2 maneras se ve igual?
- ¿Cuál es la diferencia entre getWidth / Height () y getMeasuredWidth / Height () en Android SDK?
- Android: Uso de dimen.xml desde el código
- VideoView para que coincida con la altura de los padres y mantenga la relación de aspecto
- ¿Puedo ocultar un botón de imagen en un diseño, (dimensiones y fondo) hasta que aparezca una llamada para establecerla?
- ¿Es dp lo mismo que dip?
- Dimens.xml en la carpeta de valores de 7 "y 10" tableta, ¿cómo?
setTextSize( float )
espera un valor de píxel escalado. Así, setTextSize( 12 )
le daría el resultado deseado. Sin embargo, getDimension()
y getDimensionPixelSize()
devuelven el tamaño en unidades de píxeles, por lo que debe utilizar la variante de tipo unidad de setTextSize()
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á muy bien 🙂 También debe recordar que textView tiene un setTextSize (unidad int, float tamaño), que debe utilizarse al establecer el tamaño de código, pero no de xml dimen.
Actualmente tengo lo mismo. Se estableció una dimensión en dimens.xml y lo aplicó mediante programación, que es 3 veces mayor, que cuando los ajustes a través de xml.
También he comprobado:
TextView.getTextSize() = 92f getResources().getDimension(R.dimen ...) = 92f
TextView.setTextSize (92)! = TextView con el tamaño de XML, otras banderas como TypedValue.COMPLEX_UNIT_PX lo hacen aún más grande.
El valor predeterminado setTextSize aplica COMPLEX_UNIT_SP de forma predeterminada btw. Así que una vez más, la API de Android es inconsistente, por lo que la configuración de forma programática sólo y adaptar los tamaños, por lo que encajan, será mi solución.
Editar: Ajustar el tamaño del texto mediante programación en la Nota 2 (4.4.2) vs Nota 4 (5.0.1) conduce a un resultado totalmente diferente.-