2013-04-29 82 views
2

我想为不同的屏幕大小使用不同的字体大小。不同屏幕上的Android字体大小

我阅读了很多文章,但我不确定使用情况。正确使用不同梦诗资源文件不同的屏幕尺寸就像下面的代码:

res/values/dimens.xml 
res/values-small/dimens.xml 
res/values-normal/dimens.xml 
res/values-xlarge/dimens.xml 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="text_size">18sp</dimen> 
</resources> 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="text_size">24sp</dimen> 
</resources> 
... 

我也读了正确的方法是使用sp字体大小,但这并不适合字体,不同的屏幕尺寸,我期望。

如果存在,每种尺寸使用不同尺寸的缺点是什么?

谢谢

回答

1

最好的方法是为您希望支持的每个屏幕创建不同的布局资源。将每个布局放置在指定屏幕宽度的单独文件夹中。例如,正常大小的布局放置在res/layout文件夹中,7英寸平板电脑(600像素宽度)的布局资源将放在res/layout-sw600dp文件夹中。使资源名称相同,但相应地调整您的字体大小。

+0

如果你这样做只是为了实现字体大小的变化,你将无缘无故地得到大量重复的AXML,然后每次更改UI时都必须维护它。 Dimens与线性布局相结合似乎不太费力。 – 2014-02-07 14:55:05

0

@up不,这不是好方法。

@topic您可以获得宽度&屏幕高度(和视图的w & h)。接下来,您可以设置字体,例如宽度屏幕的2%。如果你的内容是1260x720,0.02 * 1260 = 24,6 px(你也可以使用(int)24.6将double转换为int)

0

我做了一些非常相似的事,对我来说工作得很好。有些人将这些值放在Fietser建议的各种布局中,但如果所有的布局最终都是完全相同的,除了字体大小相同,那么您的方法会更好。这样你可以有一个单一的布局,只能修改字体大小。但有时你可能会在实际的布局xml中有所改变,所以这可能是两种方法之间的一种冲突。