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