web-dev-qa-db-ja.com

TextViewでテキストのサイズを取得します

指定した中心のx座標とy座標にtextViewを配置する際に問題があります。最初に、textViewでテキストを設定し、ビューの幅と高さでビューを移動しようとしました このリンクから

しかし、それは機能しません。他のことを試してみたいと思います。指定したテキストがtextViewで取るサイズを取得する方法があるかどうかを知りたいですか?つまり、テキストとtextSizeがわかっているので、textViewの幅と高さを取得するにはどうすればよいですか?

IPhone開発を知っている人のためのメソッド(NSString)sizeWithFont;のようなもの。

40
Imotep

テキストビューがTVと呼ばれる場合

TV.setText("bla");
TV.measure(0, 0);       //must call measure!
TV.getMeasuredHeight(); //get height
TV.getMeasuredWidth();  //get width

これに関する詳細(更新): ビューの幅/高さを取得する方法

62
Sherif elKhatib
_Rect bounds = new Rect();

textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), bounds);
_

bounds.width()は、テキストビューのテキストの正確な幅を示します。

79

何らかの理由で、Midverse Engineerのソリューションは常に正しい結果を提供しません(少なくとも一部のAndroidバージョン)。SherifelKhatibのソリューションは機能しますが、MeadedWidthとHeightを変更する副作用があります。これにより、textViewの位置が正しくない可能性があります。

私の解決策:

width = textView.getPaint().measureText(text);
metrics = textView.getPaint().getFontMetrics();
height = metrics.bottom - metrics.top;
11
Marcel W