テキストビュー内のテキストを自動調整する方法を探していました。検索を通じて、次のような多くのソリューションを見つけました。
しかし、他の多くの人と同様に、これらは私の問題を解決しません。複数行で TextView を使用すると、期待どおりに機能しません。
基本的に私の目標はこれです:
ご覧のとおり、テキストは幅と高さに基づいてサイズ変更され、改行にも注意を払い、複数行のテキストビューを作成します。書体の変更も可能。
これを解決するための私のアイデアの1つは、次のようなものでした。
int size = CONSTANT_MAX_SIZE;
TextView tv = (TextView) findViewById(R.id.textview1)
while(Math.abs(tv.getMeasuredHeight()) >= TEXTVIEW_MAX_HEIGHT) {
size--;
tv.setTextSize(size);
tv.measure(MeasureSpec.UNSPECIFIED,MeasureSpec.UNSPECIFIED);
i++;
}
CONSTANT_MAX_SIZE は、フォントの最大サイズを定義する定数です (TextView のテキストサイズの妥当性)。
TEXTVIEW_MAX_HEIGHT は、textview の最大サイズを定義する定数です。
これは、テキストビュー内のテキストが変更されるたびに呼び出されました。
textview xml は次のようなものでした。
<TextView
android:id="@+id/textview1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:singleLine="false"
android:inputType="textMultiLine"
android:text=""
android:textSize="150sp" />
XML では幅が制限されるため、ビューの高さだけを考慮する必要があります。それを調整すると、必要に応じて Android が自動的に複数行を作成するからです。
これは潜在的な解決策ですが、完全には機能しておらず (それとはほど遠い)、リサイズ ダウン (テキストを削除するとき) をサポートしていません。
提案やアイデアはありますか?