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
android
i ustawautoSizeTextType
wartość 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żetuTextView
i jeden z typów tekstu, na przykładTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
lubTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
- Aby zdefiniować domyślne ustawienie w pliku XML za pomocą biblioteki pomocy, użyj
Przestrzeń nazw
app
i ustawautoSizeTextType
jako 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 dowolnyTypedValue
jednostki wymiaru. - Aby zdefiniować zakres rozmiarów tekstu i wymiar w pliku XML, użyj funkcji
android
przestrzeń nazw i ustaw następujące atrybuty:- Ustaw parametr
autoSizeTextType
jako none (brak) lub uniform (uniform). Wartość none (brak) jest wartością domyślną, a uniform pozwalaTextView
skalują się równomiernie w poziomie od osi pionowej. - Ustaw
autoSizeMinTextSize
,autoSizeMaxTextSize
, iautoSizeStepGranularity
atrybutó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
app
i ustawautoSizeText
,autoSizeMinTextSize
autoSizeMaxTextSize
i AtrybutyautoSizeStepGranularity
w 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
TextView
automatycznie, wywołaj metodęsetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
. Podaj tablicę rozmiarów i dowolnych elementówTypedValue
jednostkę rozmiaru. -
Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextView
w pliku XML, użyjandroid
na przestrzeń nazw i ustaw następujące atrybuty:- Ustaw
autoSizeTextType
jako none (brak) lub uniform (uniform). Wartość none (brak) jest wartością domyślną, a pole uniform pozwalaTextView
skalują się równomiernie w poziomie od osi pionowej. - Ustaw parametr
autoSizePresetSizes
do 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
TextView
automatycznie z biblioteki pomocy, wywołaj metodęTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
. Podaj instancję klasyTextView
, tablica rozmiarów i dowolna jednostka wymiarówTypedValue
dla rozmiar. - Aby użyć gotowych rozmiarów do skonfigurowania automatycznego rozmiaru
TextView
w pliku XML za pomocą biblioteki pomocy, użyjapp
oraz ustaw zmienneautoSizeTextType
i AtrybutyautoSizePresetSizes
w 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