如何获取以像素为单位的 View 文本大小的高度和宽度值?

How can I get the height and width values of View's text size in pixels?

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

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

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

一种方法是使用 getPaint() and 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();

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

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

要找出 TextView 的 height/width,您可以使用:

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

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

至于在这里可能有用的有用转换,请参考:

每当不确定方法的作用时,请检查文档并检查其他方法以弄清楚它的作用,就像您可以通过查看 [=12] 来弄清楚 getTextSize returns =].