在Android应用程序中设置文本大小

时间:2013-04-11 12:13:39

标签: android textview

我正在使用Eclipse编写一个Android应用程序并使用最新的API进行编译。

我正在设置多个TextView控件的TextSize。一些控件是用XML定义的,而一些TextView控件是用代码动态创建的。当我在应用程序中查看TextView控件时,文本大小是不同的。我正在使用相同的维度设置文本大小,所以我不明白为什么它会以不同的方式出现。

这是我定义的维度:

<!--  Default Font Size -->
<dimen name="font_size">12sp</dimen>

以下是我在XML中设置其中一个textview控件的地方:

<TextView
android:id="@+id/lblSection1Title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/device_info_title"
android:textColor="@color/FontColor"
android:textSize="@dimen/font_size" />

这是我在代码中设置文本大小的地方:

m_fTextSize = getResources().getDimension( R.dimen.font_size );
txtLabel = new TextView(this.m_xContext);
xLayoutParams = new TableRow.LayoutParams( 0, LayoutParams.WRAP_CONTENT, 0.35f );
xLayoutParams.setMargins((int)m_fMarginLeft,  (int)m_fMarginTop,  (int)m_fMarginRight,  (int)m_fMarginBottom);
txtLabel.setLayoutParams(xLayoutParams);
txtLabel.setTextColor(this.m_iTextColor);
txtLabel.setTextSize(this.m_fTextSize);

如果你看一下屏幕截图,你可以看到动态创建的TextView控件比XML中定义的屏幕上的其他TextView小。

以下是屏幕截图的链接: http://emildiego.com/systemprofiler/wp-content/uploads/sites/2/2013/04/screen-shot-text-copy.png

我知道调用getDimension会根据屏幕密度调整文本大小,但不会在XML中设置TextSize做同样的事情吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在此处找到答案:http://developer.android.com/reference/android/content/res/Resources.html#getDimension(int)

当Android返回getDimension()的值时,它已经调整了屏幕密度。请尝试使用getDimensionPixelSize()