Jak automatycznie dostosować rozmiar tekstu w wielowierszowym widoku tekstowym zgodnie z maksymalnymi wymiarami widoku?
Szukałem sposobu automatycznego dopasowania tekstu w widoku tekstowym. Dzięki moim poszukiwaniom znalazłem wiele rozwiązań, takich jak:
FontFitTextViewAutoResizeTextViewAutoScale / ResizeAle jak wiele innych nie rozwiązuje to mojego problemu. Nie działają zgodnie z oczekiwaniami, gdy używamy TextView z multilinią.
Zasadniczo moim celem jest ten:
Jak widać, tekst zmienia rozmiar na podstawie szerokości, wysokości, a także zwraca uwagę na podział linii, tworząc wielowierszowy widok tekstowy. Możesz także zmienić krój pisma.
Jednym z moich pomysłów na rozwiązanie tego było coś takiego:
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 to stała definiująca maksymalny rozmiar czcionki (poprawność tekstowa w TextView)
TEXTVIEW_MAX_HEIGHT jest stałą, która definiuje maksymalny rozmiar, jaki może mieć widok tekstowy.
Zostało to wywołane przy każdej zmianie tekstu w widoku tekstowym.
Plik tekstowy xml wyglądał mniej więcej tak:
<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" />
Ponieważ szerokość byłaby ograniczona w XML, tylko wysokość widoku musi być wzięta pod uwagę, ponieważ jego dostosowanie android automatycznie tworzy multilinię w razie potrzeby.
Chociaż jest to potencjalne rozwiązanie, nie działa idealnie (daleko od niego) i nie obsługuje zmiany rozmiaru (podczas usuwania tekstu).
Jakieś sugestie i / lub pomysły?