Quiero especificar mi propio tamaño de texto en mi aplicación, pero tengo problemas para hacerlo.
Cuando cambio el tamaño de fuente en la configuración del dispositivo, el tamaño de fuente de mi aplicación TextView
también cambia.
android
android-layout
textview
android-fonts
Vikasdeep Singh
fuente
fuente
Respuestas:
En realidad, el tamaño de fuente de Configuración afecta solo los tamaños en
sp
. Entonces, todo lo que necesita hacer: definirtextSize
endp
lugar desp
, la configuración no cambiará el tamaño del texto en su aplicación.Aquí hay un enlace a la documentación: Dimensiones
Sin embargo, tenga en cuenta que el comportamiento esperado es que las fuentes en todas las aplicaciones respetan las preferencias del usuario. Hay muchas razones por las que un usuario puede querer ajustar los tamaños de fuente y algunas de ellas incluso pueden ser usuarios con discapacidad visual médica. Usar en
dp
lugar desp
para texto puede conducir a una discriminación involuntaria contra algunos de los usuarios de su aplicación.es decir:
fuente
sp
y cuándo debería usardp
. Obtuve una muy buena respuesta aquí: stackoverflow.com/questions/11638691/…Lo más fácil es simplemente usar algo como lo siguiente:
Si desea saber más sobre el
textSize
propiedad, puede consultar la documentación del desarrollador de Android .fuente
Utilizar el
dimension
tipo de recursos como usa losstring
recursos ( DOCS ).En tus
dimens.xml
archivo, declare sus variables de dimensión:Entonces puede usar estos valores como este:
Puedes declarar diferente
dimens.xml
archivos para diferentes tipos de pantallas. Hacer esto garantizará el aspecto deseado de su aplicación en diferentes dispositivos.Cuando no especifica
android:textSize
el sistema usa los valores predeterminados.fuente
También tenga en cuenta que si textSize está configurado en código, llamar
textView.setTextSize(X)
interpreta el número (X) como SP. UsesetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
para establecer valores en dp .fuente
No es bueno tener que especificar DIP o SP nuevamente por código cuando ya está definido en un archivo dimen.xml.
Creo que la mejor opción es usar PX cuando se usa un valor dimen.xml:
De esta manera, puede cambiar de DP a SP si es necesario en el archivo dimen.xml sin tener que cambiar ningún código.
fuente
Una forma sencilla de evitar que toda la aplicación se vea afectada por el tamaño de fuente del sistema es actualizar la configuración utilizando una actividad base.
fuente
Esto puede ayudar. agregue el código en su aplicación personalizada o BaseActivity
sin embargo, Resource # updateConfiguration se aplica en el nivel de API 25, lo que significa que no será compatible algún día en el futuro.
fuente
Puedes usar este código:
resuelve su problema, pero debe saber que debe respetar las decisiones del usuario. con esto, cambiar el tamaño del texto desde la configuración del dispositivo no cambiará este valor. por eso es necesario usar sp en lugar de dp . Entonces, mi sugerencia es revisar su aplicación con diferentes tamaños de fuente del sistema (pequeño, normal, grande, ...)
fuente
para kotlin, me funciona
fuente
cambiar el DP a sp es una buena práctica para Android Android: textSize = "18sp"
fuente
Si las unidades utilizadas son SP, no DP, y desea anular el escalado de la fuente del sistema, todo lo que debe hacer es anular un método en actividad; consulte esta publicación .
resources.updateConfiguration está en desuso y tiene errores (en Oreo tuve problemas con el texto formateado).
fuente
Anular
getResources()
en actividad.Establezca el tamaño de TextView en sp como de costumbre, como
android:textSize="32sp"
fuente
en Android 8 esta solución funciona para mí
agregue este código en la actividad base
fuente https://stackoverflow.com/a/57225687/7985871
fuente