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