什么是 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()?的主要内容,如果未能解决你的问题,请参考以下文章