什么是 textview.setTextSize()?

Posted

技术标签:

【中文标题】什么是 textview.setTextSize()?【英文标题】:What is textview.setTextSize()? 【发布时间】:2014-06-28 17:56:57 【问题描述】:

在我的安卓游戏中,有一个文本视图。我正在使用以下代码设置文本大小。

textview.setTextSize(30);

30 以像素为单位。但它到底是什么?是字符的高度还是宽度?是序数吗? ?

【问题讨论】:

它只会增加文本大小。它与高度和宽度无关。两者都会增加。你可以增加 TextView 的大小。 也对此投反对票,因为您可以自己查找 android 文档。 @aamit915 此问题未在文档中解决。 啊我的错,我现在明白你的问题是什么了。 Android如何测量文本的大小。我的错。不幸的是,我改变投票为时已晚。我很确定它是基于可以包含最高和最低字母的边界框的高度,但我找不到任何确认。 【参考方案1】:

在 android (java 或 kotlin) 中设置文本大小只需使用 SP

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);

【讨论】:

setTextSize() 默认使用 sp 单位。不过,getTextSize() 返回像素。【参考方案2】:

setTextSize(30) - 它根据设备上的一个像素尺寸设置文本的字体大小,并且由于不同的设备具有不同的像素大小,根据它们的屏幕大小和结果,最终的字体大小在设备。

要管理字体大小,您应该使用“sp”。例如:textview.setTextSize(20sp)。 “sp”是与比例无关的像素,android 文档鼓励使用它来管理不同屏幕尺寸上的文本。

有关如何计算 sp 的更多信息,can be found here.

【讨论】:

我知道 px、sp、dp。我想知道物理上的“30”到底是什么,或者它只是一个序数。 ? 只是想说 textView.setTextSize(20sp) 显然没有意义。 textView.setTextSize(float) 隐式使用“sp”。如果您想选择您的单位(例如 DIP),您可以使用 textView.setTextSize(int, float) 其中 int 为 TypedValue 常量。无论如何,30 被定义为 30 个缩放像素,它基于屏幕密度和用户选择的字体大小。 textview.setTextSize(20sp) 【参考方案3】:

@Rasoul Miri 的答案适用于 Java,因为 Java 确实对数字进行类型提升。

另一方面,Kotlin 不会动一根手指,只会迂腐地唠叨你:

The integer literal does not conform to the expected type Float

因此,请务必通过 :.toFloat() 调用请求它为您进行显式转换。

所以,@Rasoul 的例子变成了。

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14.toFloat());

注意:会将此作为编辑添加到 @Rasoul 的答案中,但 *** 说 The suggested Edit queue is full

【讨论】:

以上是关于什么是 textview.setTextSize()?的主要内容,如果未能解决你的问题,请参考以下文章

TextView大小在实际设备和模拟器中有所不同

Android的TextView设置padding无效

Android的TextView设置padding无效

Android中TextView中的字体大小能设置吗

什么是帧数?什么是FPS?什么是PING?什么是延迟?什么是延时?什么是延迟时间?什么是时延?.

什么是PP,PE.什么是均聚..什么是共聚..什么是嵌段..什么是无规,什么是注塑。什么是吹膜..什