不同屏幕尺寸的不同字体大小

Gra*_*tzi 20 android

在我的应用程序中,我必须使用较小的字体用于中密度设备.有可能指定吗?

mai*_*450 30

你应该使用样式,然后你可以有单独的文件夹"值"(默认)"values-hdpi"(高密度)"values-mdpi"(中密度)等等,并将你的样式文件与每个文件夹中正确的textSize值放在一起如所须.

然后,当你在中密度设备时,它将在"values-mdpi"文件夹中选择文件(如果存在)或"value"(如果不存在),并且相同的高密度等...

同样的原则适用于al"res"子文件夹(drawables,values等...)

  • @hackbod dip没有任何比例.它使所有屏幕分辨率的内容看起来都一样.如果您将设备320x480和480x800放在一起并比较100下降它将具有相同的物理尺寸,是的.但是,320x480屏幕的可用空间仍然较少.因此,使用dip或sp仍需要缩小尺寸,以适应320x480的屏幕 (12认同)
  • 请注意,这是错误的.使用不同的样式只是为了缩放尺寸是不对的,并且当你的应用程序在没有考虑密度的设备上运行时,将会导致应用程序在将来中断.正确的做法是使用"dp"单位. (10认同)

Dav*_*ave 28

使用倾角(例如14dp)而不是像素(例如14px)指定所有字体,您无需担心屏幕密度.Android会相应地缩放字体(和布局).

编辑:以下是Android文档中sp/dp的比较:

dp与 密度无关的像素 - 基于屏幕物理密度的抽象单位.这些单位相对于160 dpi(每英寸点数)的屏幕,因此无论屏幕密度如何,160dp始终为1英寸.dp与像素的比率将随着屏幕密度而变化,但不一定是成正比的.在布局中指定视图尺寸时应使用这些单位,因此UI可以适当缩放以在不同屏幕上以相同的实际尺寸渲染.

sp与 Scale无关的像素 - 这类似于dp单元,但它也可以根据用户的字体大小首选项进行缩放.建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好调整它们.

  • 如果Gratzi不知道,还要指定SP中的宽度和高度而不是像素.以下关于Styles的答案是关于管理应用程序外观的一个很好的提示,但Dave关于使用DP来指定字体大小. (3认同)
  • 请注意,您还可以通过在文件中指定维度来命名维度(例如`values/dimens.xml`).这样,您可以通过创建其他维度文件(例如`values-ldpi/dimens.xml`和`values-xhdpi/dimens.xml`)为不同的屏幕DPI使用不同的DP值.此方法的优点是您可以继续使用DP/SP值并保留*visible*control PX单位. (3认同)
  • 不,使用dp单位会使您的尺寸按密度成比例.这是*绝对*正确的方法来做到这一点.使用样式是错误的.它假定您知道您将遇到的每个可能的屏幕密度,但是您没有,因此当您的应用程序在新密度上运行时,将来会破坏.只需使用dp.这就是它的用途. (2认同)
  • @hackbod dip没有任何比例.它使所有屏幕分辨率的内容看起来都一样.如果您将设备320x480和480x800放在一起并比较100下降它将具有相同的物理尺寸,是的.但是,320x480屏幕的可用空间仍然较少.因此,使用dip或sp仍需要缩小尺寸,以适应320x480的屏幕. (2认同)