W Androidzie 8.0 (poziom interfejsu API 26) lub nowszym możesz poinstruować
TextView, aby umożliwić rozmiar tekstu
automatycznie się rozszerzać lub zmniejszać, by wypełnić układ w oparciu o
TextView – cechy i granice. To ustawienie ułatwia
aby zoptymalizować rozmiar tekstu na różnych ekranach za pomocą zawartości dynamicznej.
Biblioteka pomocy 26.0 w pełni obsługuje automatyczny rozmiar TextView
na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub starszym.
Pakiet android.support.v4.widget zawiera TextViewCompat
aby uzyskać dostęp do funkcji w sposób zgodny wstecznie.
Konfigurowanie automatycznego rozmiaru obiektu TextView
Aby skonfigurować automatyczny rozmiar reklam, możesz użyć platformy lub biblioteki pomocy
TextView programowo lub w formacie XML. Do
ustaw atrybuty XML, możesz też użyć polecenia Właściwości
w Android Studio.
Automatyczny rozmiar elementu TextView możesz skonfigurować na 3 sposoby:
opisane w sekcjach poniżej:
Uwaga: jeśli ustawisz autoskalowanie w pliku XML,
zalecane z wartością „wrap_content” dla wartości
layout_width lub layout_height atrybutu
TextView. Może to spowodować,
nieoczekiwane rezultaty.
Domyślny
Ustawienie domyślne umożliwia automatyczne skalowanie TextView
równomiernie na osiach poziomej i pionowej.
- Aby automatycznie zdefiniować ustawienie domyślne, wywołaj funkcję
setAutoSizeTextTypeWithDefaults(int autoSizeTextType). Podaj urządzenieAUTO_SIZE_TEXT_TYPE_NONE, aby je wyłączyć użyj funkcji automatycznego rozmiaru lub elementuAUTO_SIZE_TEXT_TYPE_UNIFORM, aby równomiernie skalować oś poziomą i pionową. - Aby określić domyślne ustawienie w pliku XML, użyj przestrzeni nazw
androidi ustawautoSizeTextTypewartość none lub uniform.
Uwaga: domyślne wymiary jednostki jednolitej.
skalowanie wynosi minTextSize = 12sp,
maxTextSize = 112sp i granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
Definiowanie ustawienia domyślnego za pomocą biblioteki pomocy
- Aby automatycznie zdefiniować ustawienie domyślne przy użyciu biblioteki pomocy,
Wywołaj funkcję
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType). Podaj wystąpienie widżetuTextViewi jeden z typów tekstu, na przykładTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONElubTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM - Aby zdefiniować domyślne ustawienie w pliku XML za pomocą biblioteki pomocy, użyj
Przestrzeń nazw
appi ustawautoSizeTextTypejako none (brak) lub uniform (uniform).
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" /> </LinearLayout>
Szczegółowość
Możesz zdefiniować zakres minimalnych i maksymalnych rozmiarów tekstu oraz
który określa rozmiar każdego kroku.
TextView skaluje się równomiernie w zakresie od
minimalny i maksymalny rozmiar. Każdy przyrost ma miejsce
rozmiar ustawiony w atrybucie szczegółowości.
- Aby automatycznie zdefiniować zakres rozmiarów tekstu i wymiar, wywołaj
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit). Podaj wartość maksymalną, minimalną i szczegółowość i dowolnyTypedValuejednostki wymiaru. - Aby zdefiniować zakres rozmiarów tekstu i wymiar w pliku XML, użyj funkcji
androidprzestrzeń nazw i ustaw następujące atrybuty:- Ustaw parametr
autoSizeTextTypejako none (brak) lub uniform (uniform). Wartość none (brak) jest wartością domyślną, a uniform pozwalaTextViewskalują się równomiernie w poziomie od osi pionowej. - Ustaw
autoSizeMinTextSize,autoSizeMaxTextSize, iautoSizeStepGranularityatrybutów definiujących wymiary do automatycznego dobierania rozmiaruTextView.
- Ustaw parametr
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" />
Określanie szczegółowości za pomocą biblioteki pomocy
- Aby zdefiniować zakres rozmiarów tekstu i wymiar automatycznie za pomocą
Support Library, wywołaj
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit). należy podać wartość maksymalną, minimalną, szczegółowość i dowolne jednostki wymiarówTypedValue. - Aby zdefiniować zakres rozmiarów tekstu i wymiar w formacie XML, korzystając z pomocy
użyj przestrzeni nazw
appi ustawautoSizeText,autoSizeMinTextSizeautoSizeMaxTextSizei AtrybutyautoSizeStepGranularityw pliku XML układu.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizeMinTextSize="12sp" app:autoSizeMaxTextSize="100sp" app:autoSizeStepGranularity="2sp" /> </LinearLayout>
Gotowe rozmiary
Gotowe rozmiary umożliwiają określenie wartości,
TextView wybiera ten rozmiar przy automatycznym rozmiarze tekstu.
-
Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextViewautomatycznie, wywołaj metodęsetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit). Podaj tablicę rozmiarów i dowolnych elementówTypedValuejednostkę rozmiaru. -
Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextVieww pliku XML, użyjandroidna przestrzeń nazw i ustaw następujące atrybuty:- Ustaw
autoSizeTextTypejako none (brak) lub uniform (uniform). Wartość none (brak) jest wartością domyślną, a pole uniform pozwalaTextViewskalują się równomiernie w poziomie od osi pionowej. - Ustaw parametr
autoSizePresetSizesdo tablicy z gotowymi rozmiarami. Aby uzyskać dostęp do tablicy jako zdefiniuj tablicę w funkcjires/values/arrays.xml.
- Ustaw
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizePresetSizes="@array/autosize_text_sizes" />
Konfigurowanie gotowych rozmiarów za pomocą biblioteki pomocy
- Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextViewautomatycznie z biblioteki pomocy, wywołaj metodęTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit). Podaj instancję klasyTextView, tablica rozmiarów i dowolna jednostka wymiarówTypedValuedla rozmiar. - Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextVieww pliku XML za pomocą biblioteki pomocy, użyjapporaz ustaw zmienneautoSizeTextTypei AtrybutyautoSizePresetSizesw pliku XML układu.
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizePresetSizes="@array/autosize_text_sizes" /> </LinearLayout>
Dodatkowe materiały
Dodatkowe informacje o automatycznym rozmiarze elementu TextView przy pracy z komponentami dynamicznymi
treść, obejrzyj
Android Jetpack: automatyczne określanie rozmiaru obiektu TextView