我使用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不会做同样的事情吗?

在此先感谢您的协助。

最佳答案

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

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

08-18 05:10
查看更多