texto tamaño studio propiedades mostrar letra fuente fondo español color cambiar android dialog dimension text-size

android - studio - Inconsistencia al configurar el tamaño de fuente TextView en código y en recursos



tamaño de letra en android studio (3)

La documentación oficial no parece responder a esto, o no puedo resolverlo.

Elemento (sin AlertDialog el AlertDialog , sucede en cualquier TextView también):

TextView tv = (TextView) dialog.findViewById(android.R.id.message);

Inconsecuencia. Caso A:

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); // or tv.setTextSize(14); does the same

Caso B:

tv.setTextSize(getResources().getDimension(R.dimen.text_size_small)); // TypedValue makes no difference either.

donde values/dimens.xml tiene:

<dimen name="text_size_small">14sp</dimen>

Resultado: el tamaño de la fuente no es el mismo y parece mucho más grande cuando se recupera del recurso. Probablemente me esté perdiendo algo, ¿cuál es mi error y lo más importante? ¿Por qué?

- ACTUALIZAR A PRIMERA RESPUESTA -

El número fijo era solo un ejemplo, ya que nadie codificaría los tamaños de fuente fijos en el código. Así que permítanme reformular la pregunta:

¿Por qué si obtengo el recurso del código, el tamaño del texto es más grande que cuando obtengo el recurso de un diseño XML? Además, la pregunta sigue siendo la misma: ¿cómo recupero una unidad de 14sp en el código y la mantengo consistente con la unidad de 14sp que está configurada en el diseño XML? No acepté la respuesta porque no me dice cómo usar las unidades sp del recurso en el código para el tamaño del texto.

En este diseño, el tamaño de la fuente es diferente, incluso si la dimensión es la misma:

<TextView android:id="@+id/my_text" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/TextBody" />

styles.xml:

<style name="TextBody"> <item name="android:textSize">@dimen/text_size_small</item> <item name="android:lineSpacingMultiplier">1.1</item> <item name="android:textColor">@color/body_text_1</item> <item name="android:textIsSelectable">true</item> <item name="android:linksClickable">true</item> </style>

Ver text_size_small allí? ¿Por qué en este caso el tamaño de la fuente es más pequeño que en el código, usando el mismo recurso dimen ?


De alguna manera esto parece encajar:

XML:

<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="typo14">9sp</dimen> </resources>

Java:

setTextSize(TypedValue.COMPLEX_UNIT_SP, 9); setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.typo14));


Debería usar setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); porque la documentación del método getDimension establece que devuelve un Resource dimension value multiplied by the appropriate metric. que entiendo es el valor de px absoluto precalculado.

Es decir, uso:

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size_small));


Es una cuestión de sp px dpi

tv.setTextSize(14) = 14 pixels