【问题标题】:How can I get the height and width values of View's text size in pixels?如何获取 View 文本大小的高度和宽度值(以像素为单位)?
【发布时间】:2021-03-15 18:07:31
【问题描述】:

我需要获取 textView 文本的高度和宽度。 是的,有一个名为 textView.getTextSize() 的方法,但我不明白这个大小是什么意思:高度、宽度还是其他什么?我需要准确的宽度和高度值(如果值以像素为单位而不是 sp),那就太好了。

【问题讨论】:

    标签: java android text view text-size


    【解决方案1】:

    getTextSize() 返回文本集的大小,这实际上是TextView 的字体大小,您可以通过查看setTextSize 方法来确定这一点: https://developer.android.com/reference/android/widget/TextView#setTextSize(int,%20float)

    要计算出您可以使用的 TextView 的高度/宽度:

    https://developer.android.com/reference/android/view/View#getMeasuredHeight() https://developer.android.com/reference/android/view/View#getMeasuredWidth()

    这是假设视图已经被测量和布局。

    关于此处可能有用的有用转换,请参阅: How to convert DP, PX, SP among each other, especially DP and SP?

    当不确定某个方法的作用时,请查看文档并查看其他方法以了解它的作用,就像您可以通过查看 setTextSize 来了解 getTextSize 返回的内容一样。

    【讨论】:

      【解决方案2】:

      一种方法是使用getPaint()getTextBound()

      String text = (String) textView.getText();
      Rect textBound = new Rect();
      textView.getPaint().getTextBounds(text,0,text.length(),textBound);
      int textHeight = textBound.height();
      int textWidth = textBound.width();
      

      我不完全确定高度和宽度是否以像素为单位。基于这个Q&A 关于RectF,我相信Rect 也应该使用像素。

      【讨论】:

      • 有趣的实验:我试图用 Log.d() 获取值,第一个值是高度,我试图用你写的代码得到它,第二个值是相同的高度但是这次是 textView.getTextSize()。我认为 textView.getTextSize() 返回高度值,导致另一个回答的人说。但奇怪的是:这两个返回值不一样。第一个 == 31,第二个 == 39.0。我阅读了文档,据说 textView.getTextSize() 以像素为单位返回值。为 Rect 编写相同的内容。发生什么了? O_O
      • 区别似乎类似于measureText()getTextBound()宽度的区别,如answer所示。
      【解决方案3】:

      getTextSize() 返回TextView 的行高(以像素为单位)。

      我认为您正在寻找的是 textView.getLayout().getHeight()textView.getLayout().getWidth(),尽管如果 TextView 最近发生更改,Layout 可能为空。

      【讨论】:

      • 对于“getTextSize() 返回 TextView 的高度(以像素为单位)”。谢谢。这是一个很好的信息。但另一部分你误解了。不,我不需要视图的值,我只需要视图文本的值。仅此而已。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2011-12-05
      • 2014-12-06
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多