Paint クラスにはメソッドがあります: Paint.getTextBounds()Rect
は、何らかのテキストで占められているものを返します。しかし、この答えによると、TextViewの幅/高さとは異なるものを返します。
Q1: Paint.getTextBounds()Rect
によって返されるTextView の幅と高さを取得する方法はありますか?
幅/高さを正確に知る必要があることに注意してください。約 2 ~ 3% のエラーが発生する可能性のある の上限を喜んでお知らせrect
しますが、それより大きくしてはいけません (画面の解像度とピクセル密度に依存しないすべての電話で機能するはずです)。
Q2: 指定された textSize でテキストの幅と高さを決定する他の QUICK メソッドはありますか?
幅はPaint.measureText()で決定できますが、これは高さを返しません。高さはStaticLayout
テキストで new を作成してからStaticLayout.getHeight()を呼び出すことで決定できますが、これは遅すぎます。もっと速いものが必要です。
このすべての背景は、AutoFitTextView
テキスト サイズを拡大または縮小することによって、テキストをその境界内に自動的に収まるようにすることです。このようなAutoFitTextView
s の多くは動的に非常に迅速に変更されるため、これは迅速に行う必要があります。