栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 文字的测量

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 文字的测量

文章目录
  • Android 文字的测量
    • `getTextBounds()`与`measureText()`的区别

Android 文字的测量
private fun test1() {
  textView.post {
    val textWidth = textView.measuredWidth
    val textHeight = textView.measuredHeight
    Log.e(TAG, "方式一:$textWidth $textHeight") //方式一:255 63
  }
}

private fun test2() {
  val textSize = textView.textSize
  val text = textView.text.toString()

  val paint = Paint().apply {
    this.textSize = textSize
  }
  val textWidth = paint.measureText(text)
  Log.e(TAG, "方式二:$textWidth") //方式二:255.0
}

private fun test3() {
  val textSize = textView.textSize
  val text = textView.text.toString()

  val rect = Rect()
  val paint = Paint().apply {
    this.textSize = textSize
    getTextBounds(text, 0, text.length, rect)
  }
  val textWidth = rect.width()
  val textHeight = rect.height()
  Log.e(TAG, "方式三:$textWidth $textHeight") //方式三:249 37
}

private fun test4() {
  val textSize = textView.textSize
  val text = textView.text.toString()

  var textWidth = 0F
  val cWidths = FloatArray(text.length)
  val paint = Paint().apply {
    this.textSize = textSize
    getTextWidths(text, cWidths)
  }
  cWidths.forEach {
    textWidth += it
  }
  Log.e(TAG, "方式四:$textWidth") //方式四:254.28516
}
getTextBounds()与measureText()的区别

通过观察运行的结果,发现使用measureText()测量的值比getTextBounds()的值要大一些。

  • measureText():它测量的是文字绘制时所占用的宽度,每个文字之间都会有一定的间距,所以实际占用会更宽一点。
  • getTextBounds():它测量的是文字的显示范围,是一个矩形区域,这个矩形区域尽可能的缩小,直到恰好紧紧包裹文字,这个矩形的范围就是这段文字的bounds。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号