TextView – 以编程方式设置文本大小似乎不起作用

我正在使用Eclipse Indigo,testing2个仿真器(2.2和3.0)。

下面的代码显示了我现在正在testing的内容,但是当设置文本大小的时候,在运行模拟器时屏幕上什么也没有显示(如果我注释掉文本大小,文本显示为红色)。 我认为日食不是重build代码,但我添加了代码行来添加蓝色背景,工作。 我已经尝试设置文本的大小设置文本仍然没有成功。 代码如下。 谢谢你的帮助! (免责声明) – 我试图远离XML。 因为我已经知道Java我不想依赖于。

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); } } 

文字大小2实际上是隐形的。 至less尝试14。 顺便说一句,使用xml有很多好处,一旦你需要做比“Hello World”更复杂的任何事情,都会让你的生活更轻松。

方法TextView.setTextSize(int unit , int size); 需要两个参数。

尝试这个 :

 text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

参考这个和这个 。

这为我解决了这个问题。 我在所有设备上获得统一的字体大小。

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

有关在代码中设置文本大小的更多信息,请参阅此链接。 基本上它说:

public void setTextSize(int unit,float size)

从以下版本开始:API级别1将默认文本大小设置为给定的单位和值。 有关可能的尺寸单位,请参见TypedValue 。 相关的XML属性

android:textSize参数

单位所需的尺寸单位。
大小给定单位中的所需大小。

在我的情况下使用此方法

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

这里以编程方式设置TextView的TextSize

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

继续享受:)

目前, setTextSize(float size)方法将运行良好,所以我们不需要使用其他方法来更改文本大小

 /** * 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); } 

例如使用

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