tv.setTextSize(14);
我将 TextView 字体大小设置为 14sp。当我在 Nexus One 中运行我的应用程序时,字体大小还可以。但是,当我在 Nexus 7 中运行它时,字体大小是如此之小。这是因为 Android 根据密度缩放字体大小。Nexus 7 的密度低于 Nexus One,Android 缩小了字体大小。如何调整与屏幕大小成比例的字体大小?
使用 XML 资源。在一个 XML 资源文件(我通常称之为“dimens.xml”)中,定义一个维度资源,称为font_size
. 在文件夹“values-normal”和“values-large”中创建一个“dimens.xml”文件。默认情况下将使用“values”中的字体大小,但大屏幕(如 Nexus 7)将使用“values-large”中的大小。如果您想明确支持 10" 平板电脑,也可以在 'values-xlarge' 中定义它。
可以使用 XMLtextSize="@dimen/font_size"
和使用tv.setTextSize(getResources().getDimension(R.dimen.font_size))
.
您的 dimens.xml 文件应如下所示:
<resources>
<dimen name="font_size">14sp</dimen>
</resources>
如果您使用 dimens.xml 方法会更好,并在文件夹中为手机和平板电脑生成不同的版本:
res/values/dimens.xml -> 默认尺寸
res/values-normal/dimens.xml -> 手机尺寸
res/values-large/dimens.xml -> 对于平板电脑尺寸(请注意为字体大小设置更大的值,可能填充,等等......
您可以从您的dimes.xml
在 中定义一个维度dimens.xml
。例如:
<dimen name="my_text_size">14sp</dimen>
然后在您的代码中使用它:
tv.setTextSize(getResources().getDimension(R.dimen.my_text_size));