android - propiedades - Obtenga la dimensión de XML y configure el tamaño del texto en tiempo de ejecución
programacion android pdf 2018 (3)
Ambos métodos getDimensionPixelSize () y getDimension () usan la densidad de la pantalla para calcular los píxeles. La densidad de la pantalla del teléfono es obviamente hdpi (240 ppp), por lo que usa una escala de 1.5 para convertir dp a sp. Matemática simple 18 * 1.5 = 27.
Parece que la densidad de su tableta es mdpi (160dpi) por lo que la escala es solo 1: 1.
Pero si comparas el tamaño real de ambos textos, debería ser el mismo.
La mejor manera es simplemente crear dos archivos dimens.xml uno en la carpeta de valores para el teléfono y otro en valores-sw600dp para tabletas (también puede usar la carpeta values-sw720dp-land para almacenar las dimensiones de las tabletas de 10 pulgadas en orientación horizontal).
Puede leer más acerca de las dimensiones en Android en: http://android4beginners.com/2013/07/appendix-c-everything-about-sizes-and-dimensions-in-android/
En dimens.xml, tengo:
<dimen name="text_medium">18sp</dimen>
En tiempo de ejecución, obtengo este valor y establezco el tamaño del texto de una vista de texto:
int size = context.getResources().getDimensionPixelSize(R.dimen.text_medium);
textView.setTextSize(size).
En una tableta de 10 "(1280 x 800), todo está bien; pero en un teléfono (800 x 480), la vista de texto tiene una fuente muy grande. En la tableta, el tamaño es igual a 18; en el teléfono, es 27.
Si configuro el tamaño manualmente:
textView.setTextSize(size)
el tamaño es normal en ambos dispositivos.
Puede usar sdp (píxeles de densidad escalables) https://github.com/intuit/sdp en lugar de dp, esto definitivamente le salvará la vida
<dimen name="text_medium">18sp</dimen>
Establecer el tamaño en código:
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_medium));