设置文本字体大小
设置文本字体大小的方式
- 在Java代码中通过调用 文本视图对象的setTextSizeI()方法
- 在xml文件中通过android:textSize属性设置字体大小,此时需要指定字号单位
注:Android在布局文件中字号单位通常用sp。
尺寸单位相关知识补充
像素(Pixel):又称为图像元素,是构成图像的基本单元,一个像素的大小无法确定,根据屏幕尺寸和像素数量的关系变化,一个像素点为1px。
分辨率(Resolution):分辨率指屏幕垂直和水平方向上的像素数量,如果分辨率是1920*1080,就代表垂直方向上有1920个像素,水平方向上有1080个像素。
像素密度Dpi:像素密度指屏幕上每英寸有多少个像素点。(1英寸=2.54厘米)。
假如一台手机的屏幕尺寸为4.95英寸,屏幕分辨率为1920*1080,则这台手机的Dpi计算如下:
- 计算屏幕对角线像素数量: 1920^2+1080^2=2202^2。
- 4.95英寸指的是屏幕对角线长度,计算Dpi:2202 / 4.95 = 445。
- 这个设备的像素密度Dpi为 445,即每英寸的距离中有 445个像素点。
独立像素Dip/dp:dip是长度单位,相同的单位长度在不同屏幕上显示效果不同,跟屏幕像素密度有关。
sp:sp的原理跟dp差不多,但它专门用来设置字体大小。在系统设置里可以调整字体的大小(小、标准、大、超大)。设置普通字体时,同数值dp和sp的文字看起来一样大;如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。
在java代码中设置文本大小:
TextView tv_hello = findViewById(R.id.tv_hello); tv_hello.setTextSize(30);//java代码中设置文本字体大小不用写单位,系统默认单位是sp
所有显示到屏幕上的图像都是以px作为单位的,dip是我们开发过程中使用的长度单位,最后也会转换为px。一台设备上dip跟px的换算关系为
px = Dpi/160 * dip
根据换算关系:一台3.6寸,分辨率为320*480的手机,其像素密度dpi为160,在这台手机上1px = 1dip。
为什么要有Dip呢,我们来看两个实验
结论:dp的UI效果只在相同尺寸的屏幕上相同,如果屏幕尺寸相差过大,则需要做dp适配
实验一
相同分辨率,不同尺寸的两台手机A和B
代号 | 分辨率 | 尺寸 | dpi | dp |
手机A | 320*480 | 3.6寸 | 160 | 1dp = 1px |
手机B | 320*480 | 7.2寸 | 80 | 1dp = 0.5px |
如果通过代码设置一个宽度为100dp的TextView
代号 | 通过代码设置的宽度 | 在手机上实际显示的宽度 | 屏幕宽度 | 比例关系 |
手机A | 100dp | 100px | 320px | 10:32 |
手机B | 100dp | 50px | 320px | 5:32 |
得到结论:相同分辨率的不同手机,屏幕越大,通dp组件占用屏幕比例越小,如图
实验二
相同尺寸,不同分辨率的两台手机A和B
代号 | 分辨率 | 尺寸 | dpi | dp |
手机A | 320*480 | 3.6寸 | 160 | 1dp = 1px |
手机B | 640*960 | 3.6寸 | 320 | 1dp = 2px |
如果通过代码设置一个宽度为100dp的TextView
代号 | 通过代码设置的宽度 | 在手机上实际显示的宽度 | 屏幕宽度 | 比例关系 |
手机A | 100dp | 100px | 320px | 10:32 |
手机B | 100dp | 200px | 640px | 10:32 |
得到结论:对于相同尺寸的手机,即使分辨率不同,同dp组件所占屏幕比例相同,如图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性