official documentation似乎無法回答此問題,或者我無法弄清楚。在代碼和資源中設置TextView字體大小時的不一致性
元素(沒關係的AlertDialog
,它發生在任何的TextView以及):
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
不一致性。方案A:
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
案例B:
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
其中values/dimens.xml
有它:
<dimen name="text_size_small">14sp</dimen>
結果:字體大小是不一樣的,而且從資源檢索時會出現更大。我可能錯過了一些東西,那麼我的錯誤是什麼,最重要的是:爲什麼?
- UPDATE先應答 -
的固定數量只是一個例子,因爲沒有人會硬代碼在代碼固定的字體大小。因此,讓我重新說明這個問題:
爲什麼如果我從代碼獲取資源,文本大小比從XML佈局獲取資源時大?此外,問題仍然是一樣的:如何在代碼中檢索14sp單元,並使其與佈局XML中設置的14sp單元保持一致?我沒有接受答案,因爲它沒有告訴我如何從代碼中的資源中使用文本大小的sp單元。
在此佈局,字體大小是不同的,即使尺寸是相同的:
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
styles.xml:
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
見text_size_small呢?爲什麼在這種情況下字體大小比在代碼中小,使用相同的dimen
資源?
謝謝你提出這個問題。我也在我的項目中得到它。 – anticafe