Cómo evitar que cambie el tamaño de los textos en una App

Tamaño de textos en Android. digitalDot

Si estás diseñando una aplicación móvil para Android, esta información te interesa conocerla.

 

Como todos sabemos, Google da la posibilidad, desde los ajustes de sus dispositivos Android, de ajustar el tamaño de la fuente de todos los textos del sistema.

 

Normalmente, este ajuste se deja en el valor por defecto, pero en ocasiones, sobre todo en personas con dificultad visual, este ajuste se aumenta.

 

¿En que nos afecta a nosotros como desarrolladores de aplicaciones móviles esta funcionalidad?

 

Pues bien, a la hora de desarrollar una aplicación nativa Android cuando diseñamos la aplicación para hacerla responsive, para todos los tamaños de pantalla, podemos encontrarnos con el inconveniente de que el ajuste mencionado de tamaño de fuente nos puede afectar a todas las fuentes de nuestra aplicación.

 

De tal forma, que todo el esfuerzo realizado en hacer nuestra aplicación responsive para cualquier dispositivo puede ser inútil para estas personas que aumentan el tamaño general de las fuentes en sus dispositivos.

 

Normalmente, y sobre todo si tenemos un buen diseño previo de nuestra aplicación, todos los textos están pensados para que ocupen un espacio suficiente para que cualquier persona pueda leerlos. Por lo que lo más normal es que no queramos que nuestros textos varíen según el valor de este ajuste nativo en Android.

¿Cómo evitar que varíe el tamaño de los textos de una app Android?

Pues bien, lo forma más básica es utilizando la medición “dp” en nuestros layout de diseño.

 

Si habéis trabajado con Android Studio ya habréis visto más de una vez que cuando usas la medición “dp” para indicar el tamaño de fuente en un TextView (que es el elemento básico de texto) nos indica que no es recomendable usar esa medición y nos aconseja usar en su lugar la medición “sp”.

 

Pues bien, es cuando usamos “sp” cuando dichos textos se ven afectados por la variación de tamaño de fuente del ajuste nativo en Android y, sin embargo, al usar “dp” esto no ocurre.

 

En definitiva, si queremos que el tamaño de nuestros textos sea independiente a este ajuste debemos usar la medición “dp”.

 

De esta manera logramos “solucionar” este problema, y lo pongo entrecomillado porque en realidad esta solución puede verse frustrada y no sernos útil si en algún momento cambiamos el tamaño de la fuente de un TextView mediante código.

 

Diseño de aplicaciones móviles. digitalDot

¿Por qué ocurre esto?

El hecho es que cuando cambiamos el tamaño de la fuente de un TextView mediante código, el método en cuestión (setTextSize) por defecto trabaja con la medición de “sp” por lo que, aunque el elemento esté definido con “dp” al usar este método vuelve a ser “sp”.

 

Esto lo podemos intentar solucionar indicándole al método la unidad de medida que queremos usar utilizando la constante “TypedValue.COMPLEX_UNIT_DIP”.

Si aún así, nuestros textos siguen variando su tamaño en correspondencia al valor del ajuste de Android. Podemos forzar a que no tenga en cuenta este valor añadiendo en la primera Actividad que se ejecute en nuestra aplicación la línea:

 

adjustFontScale(getResources().getConfiguration());
Con la siguiente implementación:
public void adjustFontScale(Configuration configuration)
{
configuration.fontScale = (float) 1.0;
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
}

 

Este método, lo que hace es básicamente coger la configuración que le llega desde los ajustes de Android y cambiar el escalado de la fuente (que es el ajuste del que estamos hablando) a su valor por defecto (1.0)

 

Esta solución es la última que debemos probar pues es la más invasiva.

 

Esperamos que esta información os haya resultado útil. Si tenéis dudas a la hora de desarrollar cualquier app, podéis contactar con el equipo de diseño de aplicaciones móviles de digitalDot que estará encantado de echaros una mano.

 

Tamaño de letra en app Android. digtialDot

OTRAS NOTICIAS SOBRE Actualidad web