Si asigno un valor entero para cambiar un cierto tamaño de texto de un TextView
código Java, el valor se interpreta como pixel ( px
).
Ahora, ¿alguien sabe cómo asignarlo sp
?
http://developer.android.com/reference/android/widget/TextView.html#setTextSize%28int,%20float%29
Ejemplo:
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 65);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.my_text_size_in_sp));
Obtener su tamaño de texto de esta manera ya convertirá SP a PX, teniendo en cuenta tanto la densidad de la pantalla como el factor de escala del texto.Puede usar un
DisplayMetrics
objeto para ayudar a convertir entre píxeles y píxeles escalados con elscaledDensity
atributo .fuente
may be adjusted in smaller increments at runtime based on a user preference for the font size
que se tendrá en cuenta el tamaño de la fuente .Un enfoque más limpio y más reutilizable es
definir el tamaño del texto en el
dimens.xml
archivo dentro delres/values/
directorio:y luego aplicarlo a
TextView
:fuente
Basado en el código fuente de
setTextSize
:Construyo esta función para calcular cualquier degradación a píxeles:
Donde la unidad es algo así
TypedValue.COMPLEX_UNIT_SP
.fuente
De forma predeterminada, setTextSize, sin unidades funciona en SP (escalas de píxeles)
fuente
Gracias @John Leehey y @PeterH:
La cuestión es si define R.dimen.desired_sp a 25 en su dimen.xml
fuente
Cuando la respuesta aceptada no funciona (por ejemplo, cuando se trata de Paint) puede usar:
fuente
fuente
COMPLEX_UNIT_PX
necesitas dividir la densidad.Este es el código para convertir PX a formato SP . 100% de obras
fuente
Después de probar todas las soluciones y ninguna de ellas dio resultados aceptables (tal vez porque estaba trabajando en un dispositivo con fuentes muy grandes predeterminadas), lo siguiente funcionó para mí (COMPLEX_UNIT_DIP = Píxeles independientes del dispositivo):
fuente
Desde el nivel 1 de Api, puedes usar el
public void setTextSize (float size)
método.De la documentación:
Entonces puedes hacer simplemente:
fuente