2013-04-11 69 views
1

使用Eclipse编写android应用程序并使用最新的API进行编译。在Android应用程序中设置文本大小

我正在设置多个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控件显示为wer e动态创建的文本小于在XML中定义的屏幕上剩余的TextView。

这里有一个链接,屏幕截图: http://emildiego.com/systemprofiler/wp-content/uploads/sites/2/2013/04/screen-shot-text-copy.png

我知道打电话getDimension调节基于屏幕密度的文本大小,但不会设置TEXTSIZE在XML做同样的事情?

在此先感谢您的帮助。

回答

1

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

当Android的返回它已经调整屏幕密度getDimension()值。改用getDimensionPixelSize()来代替。

+0

我意识到getDimension会根据屏幕密度调整大小。但是为什么不在XML中使用维度font_size做同样的事情?为什么我使用相同的维度获得2种不同的字体大小? – 2013-04-11 16:26:21

+0

getDimensionPixelSize()仍返回与使用XML设置的TextView不同的字体大小。所以我仍然使用相同的尺寸获得具有不同字体大小的TextView。 – 2013-04-11 16:37:28

相关问题