Android 安卓-什么&x27;sp有什么问题吗?

Android 安卓-什么&x27;sp有什么问题吗?,android,Android,UI designer为Android应用程序绘制了此设计: 尺寸为1080x1920像素。这与具有xxhdpi密度的Nexus 5显示器相同。在此密度下,1dp=3px。 我的设计JPEG图像上有这封信。它的高度是-45px 所以我计算了我的文本视图大小45px/3=15sp <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:tex

UI designer为Android应用程序绘制了此设计:

尺寸为1080x1920像素。这与具有xxhdpi密度的Nexus 5显示器相同。在此密度下,1dp=3px。 我的设计JPEG图像上有这封信。它的高度是-45px

所以我计算了我的文本视图大小45px/3=15sp

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:text="Large Text"
    android:textColor="#5B5C5D"
    android:singleLine="true"
    android:id="@+id/tvFolder" />

但当我在Galaxy Nexus-720x1280px上运行我的应用程序时。密度-xhdpi。1dp=2px。我得到了这个结果——我的字母“d”的高度是24px,等于12dp


当然,我可以重新计算(乘以1.25)并生成TextView 19dp。但我想了解为什么会发生这种情况,我们能否解决这个问题。也许我迷茫了,犯了个错误。那么我的问题是,sp有什么问题?

您是否在设备设置中检查字体比例设置为1


如果你想用特定于设备的像素定义字体大小,你必须使用dp,如果你想让用户能够根据自己的意愿进行缩放,你可以使用sp。

我不明白你想在这里做什么。你能详细说明一下吗?你说的“xxhdpi,3x,360dpX640dp”是什么意思?我的意思是我的模板(从UI设计器获得的设计)JPEG文件的大小是1080x1920像素,相当于360dpX640dp。3X表示我应该将视图大小除以3,以获得sp或dp值。您是否在设备设置中检查字体比例设置为1?如果你想用特定于设备的像素定义字体大小,你必须使用dp,如果你想让用户能够根据自己的意愿进行缩放,你可以使用sp.@JoeRichard:不要结束这个问题,因为这是非常正常但重要的事情,在处理sp和dp时需要了解:)这100%正确。sp中应为45px/3=15dp。请参见@Christian Answer中的说明。因此,sp和px之间的速率与系统设置中用户的字体首选项设置有关,而dp和px之间的速率与屏幕密度有关?否,dp和sp之间的速率取决于用户的首选项。这允许有明显残疾的人调整他们的需求。根据指南,建议使用sp,但如果需要固定大小,则必须使用dp。