之前提出的问题和解决方案都不适合我。
对于方法setTextSize(),当我给出如下的硬编码值时:
textView.setTextSize(16)
文本在模拟器和设备上看起来大小相同。
但是,当我在尺寸文件中给出尺寸时:
<resources>
<dimen name="default_text_size">5sp</dimen>
</resources>
并且我已经以编程方式尝试了两种方法来设置此大小:
defaultTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getContext().getResources().getDimension(R.dimen.default_text_size));
和
defaultTextView.setTextSize(getContext().getResources().getDimension(R.dimen.default_text_size));
它们在真实设备和模拟器上都显示不同的大小。
请参阅随附的屏幕截图。
知道如何解决这个问题吗?我知道它会根据屏幕分辨率而改变,但这是一个巨大的变化。在模拟器的情况下,整个文本在ListView行的上半部分缩小。这不是我想要的。
答案 0 :(得分:1)
与比例无关的像素(sp) - 这就像dp单位,但确实如此 也会根据用户的字体大小首选项进行缩放。建议你 指定字体大小时使用此单位,因此将调整它们 屏幕密度和用户偏好。
当您将文本的大小单位(在TextView中)设置为 sp 时,它也会依赖于用户/设备字体大小首选项。因此,在不同的设备上,您的文字可能会有所不同。
如果您希望文本在任何地方出现(无论用户的字体大小首选项如何),请改为使用 dp :
<resources>
<dimen name="default_text_size">5dp</dimen>
</resources>