2015-10-17 27 views
0

我正在編寫一個Android應用程序。我基本上創建了以下dimen資源:爲什麼維度資源不一致以及如何獲得正確的值?

<dimen name="button_text_size">11pt</dimen> 

我用它在我的兩個XML和Java代碼來創建一個ButtonTextView其文本大小是11磅。這是我如何做:

XML

<Button 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:textSize="@dimen/button_text_size" 
     android:text="secret!" 
     android:layout_margin="@dimen/button_margin" 
     android:background="secret!" 
     android:layout_weight="1" 
     android:onClick="secret!"/> 

Java代碼

TextView text = new TextView (this); 
     text.setLayoutParams (new LinearLayout.LayoutParams (0, ViewGroup.LayoutParams.WRAP_CONTENT, 3)); 
     text.setText (secret); 
     text.setTextSize (getResources().getDimension (R.dimen.button_text_size)); 

理論上,這兩種觀點的文字應該是相同的大小。但文本視圖的文字大小似乎更大!我不知道爲什麼會發生這種情況。我想這是因爲單位出現了一些問題,但實際發生了什麼?如何獲得正確的值?

回答

2

試試這個

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size)); 

和它更好地使用SP( 「縮放像素」)作爲文本大小按Android文檔 http://developer.android.com/intl/es/reference/android/widget/Button.html

+0

只是還有一個問題,如果我使用sp,我能在我的問題中使用該方法嗎?我的意思是setTextSize(float)重載。 – Sweeper

+0

是的,你可以使用setTextSize方法,或者你想問什麼? – Pavan

+1

謝謝你的回答! – Sweeper

1

使用dp or dip代替pt

<dimen name="button_text_size">11dp</dimen> 
+1

雖然我不很瞭解單位,我相信dp不等於pt。我還能繼續使用pt嗎? – Sweeper

+0

@Sweeper爲了更好的方法你切換到使用'dp' –

+0

http://developer.android.com/intl/es/reference/android/widget/TextView.html#attr_android:textSize –

0

DP /浸:密度獨立像素 - 即基於屏幕的 物理密度的抽象單元。這些單位是相對於160 dpi (每英寸點數)屏幕,其中1dp大致等於1px。當在更高密度屏幕上運行 時,用於繪製1dp的像素數量將按適合屏幕dpi的倍數放大。 同樣,在較低密度的屏幕上,1dp使用的像素數量將縮小。

在另一方面

PT:點 - 1/72基於屏幕的物理尺寸英寸。


PX:像素 - 對應於屏幕上的實際像素。建議不要使用 度量單位,因爲實際表示形式可能會跨設備變化 ;

所以PT和PX會有所不同屏幕間而DP ** /浸會根據屏幕管理。** ..如果你想在不同的屏幕尺寸一致比去DP/DIP

更多關於尺寸refer
因此,從11磅在XML中11DP改變,這將有助於
但動態地將其視爲PX方面浮點值...所以要爲解決由帕文在

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size)); 
提供

請選擇以下值之一。

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,getResources().getDimension(R.dimen.button_text_size)); 

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.button_text_size)); 
相關問題