不同屏幕上的Android字体大小

不同屏幕上的Android字体大小,android,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> &l

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

我读了这么多的文章,但我不确定它的用法。对于不同的屏幕尺寸使用不同的尺寸资源文件是正确的,如下面的代码:

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>
...
res/values/dimens.xml
res/values small/dimens.xml
res/values normal/dimens.xml
res/values xlarge/dimens.xml
18便士
24便士
...
我还读到正确的方法是使用
sp
作为字体大小,但这并不适合我所期望的不同屏幕尺寸的字体

如果有,每种尺寸使用不同的二聚体有什么缺点


谢谢

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

不,这不是好办法


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

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

如果您这样做只是为了实现字体大小的更改,那么最终会无缘无故地重复大量AXML,每次更改UI时都必须维护这些AXML。Dimens与线性布局相结合似乎是一种不那么费力的方法。