【发布时间】:2015-07-29 08:12:15
【问题描述】:
我知道在 Android 中,您可以根据屏幕密度缩放图像。 例如,如果 mdpi 是基线,
- hdpi = 1.5 * mdpi
- xhdpi = 2 * mdpi
- xxhdpi = 3 * mdpi
- xxxhdpi = 4 * mdpi。
字体大小是否有类似的值?
【问题讨论】:
-
如果您使用“sp”,Android 中的字体大小会根据屏幕的密度和用户字体设置自动调整
我知道在 Android 中,您可以根据屏幕密度缩放图像。 例如,如果 mdpi 是基线,
字体大小是否有类似的值?
【问题讨论】:
您需要做的是使用scaleDensity(here 文档)值执行转换,DisplayMetrics 的成员
班级。来自文档
显示器上显示的字体的比例因子。这是一样的 作为密度,除了它可以在较小的增量调整 运行时基于用户对字体大小的偏好。
【讨论】:
字体大小可能使用完全相同的值
android:textSize="18dp"
虽然建议使用sp(缩放独立像素)。它与dp 几乎相同,但它可能会根据用户可访问性设置进行放大(例如,如果您视力不佳,您可以放大影响sp 的计算方式的字体大小)。所以,最后变成了:
android:textSize="18sp"
再一次,如果您使用默认设置,1dp == 1sp
【讨论】:
如果您想以编程方式进行:
view.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
【讨论】:
res 文件夹中创建这 5 个文件夹values-ldpivalues-mdpivalues-hdpivalues-xhdpivalues-xxhdpidimens.xml。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="font_size">72sp</dimen>
</resources>
根据屏幕密度改变字体大小。
【讨论】: