2013-04-11 56 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

相關問題