2011-08-09 10 views
88

Estoy usando Eclipse Indigo, probando 2 emuladores (2.2 y 3.0).TextView: configurar el tamaño del texto mediante programación no parece funcionar

el código siguiente muestra lo que estoy probando ahora, sin embargo, configurar el tamaño del texto no revela nada en la pantalla cuando se intenta ejecutar el emulador. (Si hago un comentario sobre el tamaño del texto, el texto aparece en rojo). Pensé que de alguna manera el eclipse no estaba reconstruyendo el código, pero agregué la línea de código para agregar el fondo azul y funcionó. Intenté configurar el tamaño del texto después de configurar el texto sin éxito. el código esta abajo ¡gracias por tu ayuda! (exención de responsabilidad) - estoy tratando de mantenerme alejado de xml. Siendo que ya sé java, no quiero depender de eso.

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.TextView; 

public class TestAndroidvs2Activity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView text = new TextView(this); 
    text.setTextColor(Color.RED); 
    text.setTextSize(2);  
    text.setBackgroundColor(Color.BLUE); 
    text.setText("Hello Android"); 


    setContentView(text); 
    } 
} 

Respuesta

12

El tamaño del texto 2 será prácticamente invisible. Pruébalo con 14 al menos. Por cierto, usar xml tiene muchas ventajas y hará que su vida sea más fácil una vez que necesite hacer algo más complejo que 'Hello World'.

+0

Lo intentaré con 14. Como dije en la primera publicación, incluso si 2 es demasiado pequeño, eso no debería hacer que mi pantalla quede en blanco, ¿verdad? Creo que lo estaba leyendo como una escala más allá de lo que el texto ya era en lugar de simplemente establecer el tamaño. - Lo veré, pero preguntaré de todos modos, ¿cuál es el tamaño predeterminado? gracias de todos modos. – cspam

+0

por cierto, sí, me doy cuenta de que xml puede tener sus ventajas, pero no tengo ninguna experiencia con él. Sí, sé que es probablemente fácil de aprender. Como ya estoy familiarizado con Java, pensé que sería realmente útil familiarizarse con tantas clases como sea posible. Parece que utilizar XML esconde mucho de eso. – cspam

+0

No lo oculta, son las mismas clases con los mismos parámetros. Toma algo de tiempo para poder traducir entre los dos, pero en realidad es bastante eficiente. Como beneficio adicional, si define vistas en XML, el sistema se ocupa de diferentes tamaños de pantalla, densidades y orientaciones, sin necesidad de cambiar su código, solo los archivos de diseño. –

11

Por favor, vea this enlace para obtener más información sobre cómo configurar el tamaño del texto en el código. Básicamente se dice:

SetTextSize public void (int unidad, el tamaño del flotador)

desde: API Nivel 1 Ajuste el tamaño de texto predeterminado a una unidad dada y valor. Ver TypedValue para las posibles unidades de dimensión. XML relacionado Atributos

androide: Parámetros TEXTSIZE

unidad La unidad de medida deseada.
tamaño El tamaño deseado en las unidades dadas.

+1

acabo de doble registrado en Eclipse en mi código y de acuerdo con intellisense, en realidad tengo 2 opciones para setTextSize, setTextSize (tamaño de flotante), setTextSize (unidad int, tamaño de flotante). La documentación que vinculó confirma esto. – cspam

+0

Derecha - ¿lo intentó? También Nikolay dice que 2 será MUCHO pequeño para ver, intente aumentar también. – Jack

+0

sí, pero el problema es que cuando trato de hacerlo de la forma en que lo tengo ahora, el texto ni siquiera aparece. es solo una pantalla en blanco. Incluso si 2 no se nota, ¿por qué la pantalla está en blanco? – cspam

369

el método TextView.setTextSize(int unit , int size); toma dos parámetros.

Prueba esto:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

refieren this y this.

+20

Esta es la respuesta correcta. Más específicamente: 'flotar myTextSize = TypedValue.applyDimension (TypedValue.COMPLEX_UNIT_SP, \t \t \t \t 18F, context.getResources() getDisplayMetrics().);' –

+0

Muchas gracias! – DmitryKanunnikoff

6

en mi caso utilizado este Método:

public static float pxFromDp(float dp, Context mContext) { 
    return dp * mContext.getResources().getDisplayMetrics().density; 
} 

Aquí Establecer de Vista de Texto TextSize Programatically:

textView.setTextSize(pxFromDp(18, YourActivity.this)); 

seguir disfrutando :)

+0

Hola @Dhruv Raval, estoy mejorando para poder ajustar el tamaño de fuente en mi proyecto, en caso de que este valor 18 sea válido para cualquier densidad de pantalla, ¿o debería crear una dimensión para cada pantalla? –

39

Esto ha solucionado el problema para mí. Obtuve un tamaño de letra uniforme en todos los dispositivos.

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font)); 
+0

¿Es el número uniforme de R.dimen.font o tiene diferentes tamaños para diferentes dispositivos? –

+0

En mi caso, he declarado la fuente en los archivos dimen.xml en estas carpetas: valores, valores-sw600dp, valores-sw720dp con valores específicos. – Vikas

+0

es extraño que TextView haya desaparecido después de llamar a textView.setTextSize (R.dimen.text_size_max), pero use su método, funciona. – li2

3

Actualmente, setTextSize(float size) método funciona bien, así que no es necesario utilizar otro método para cambiar el tamaño del texto

/** 
* Set the default text size to the given value, interpreted as "scaled 
* pixel" units. This size is adjusted based on the current density and 
* user font size preference. 
* 
* <p>Note: if this TextView has the auto-size feature enabled than this function is no-op. 
* 
* @param size The scaled pixel size. 
* 
* @attr ref android.R.styleable#TextView_textSize 
*/ 
@android.view.RemotableViewMethod 
public void setTextSize(float size) { 
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size); 
} 

ejemplo usando

textView.setTextSize(20); // set your text size = 20sp 
Cuestiones relacionadas