texto tamaño studio mostrar letra edittext caja android

android - studio - Cómo establecer el tamaño de texto de textview de forma dinámica para diferentes pantallas



mostrar texto en android studio (7)

Creo que debes usar el método textView.setTextSize (tamaño del flotador) para establecer el tamaño del texto. textView.setText (arg) utilizado para establecer el texto en la Vista de texto.

Estoy creando una vista de texto y agregando dinámicamente al diseño. Estoy usando el método textView.setTextSize(18) para establecer el tamaño del texto. Lo probé en una tableta Samsung y encontré que el tamaño de la fuente es demasiado pequeño para esta pantalla, luego cambié el tamaño de texto a 25 pero es demasiado grande para un emulador ( 480 * 800). Mi problema es establecer el tamaño del texto de forma dinámica para que se ajuste a todas las pantallas.


Debe usar las carpetas de recursos como

values-ldpi values-mdpi values-hdpi

Y escriba el tamaño del texto en el archivo ''dimensions.xml'' para cada rango.

Y en el código de Java puede establecer el tamaño del texto con

textView.setTextSize(getResources().getDimension(R.dimen.textsize));

Sample dimensions.xml

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


Después de mucho tiempo golpeó esto y finalmente se resolvió así

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));

crear una carpeta dimen como esta res/values/dimensions.xml

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


EDITAR: Y mientras busco en ahora encontré que esta pregunta es duplicada de : This y This

Necesita usar otra función setTextSize(unit, size) con unidad SP como esta,

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f);

Por favor, lea más sobre TypedValue constantes de TypedValue .


En Style.xml predefinir el estilo:

<style name="largeText"> <item name="android:textAppearance">@android:style/TextAppearance.Large.Inverse</item> <item name="android:textStyle">bold</item> </style>

en codigo:

text.setTextAppearance(context, R.style.largeText);


Probablemente no sea necesario utilizar los ldpi , mdpi o hdpi en este caso.

Cuando define una dimensión en un archivo de recursos, incluye la unidad de medida. Si usa unidades sp, éstas se escalan de acuerdo con la densidad de la pantalla, por lo que el texto a 15sp debería aparecer aproximadamente del mismo tamaño en pantallas de diferente densidad.
(La densidad real de la pantalla del dispositivo no coincidirá exactamente, ya que Android generaliza la densidad de la pantalla en grupos de 120, 160, 240, 320, 480 and 640 dpi ).

Al llamar a getResources().getDimension(R.dimen.textsize) devolverá el tamaño en píxeles. Si usa sp, se escalará según la densidad de la pantalla,

Llamar a setText(float) establece el tamaño en sp units . Aquí es donde está el problema,
es decir , tiene las medidas de píxeles por un lado y la sp unit por el otro para arreglar esto:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.textsize));

Tenga en cuenta que también puede usar

getResources().getDimensionPixelSize(R.dimen.textSize);

en lugar de getDimension() y redondeará y convertirá a un valor no fraccionario.


float currentSize = textEdit.getTextSize(); // default size float newSize = currentSize * 2.0F; // new size is twice bigger than default one textEdit.setTextSize(newSize);