Ab Android 8.0 (API-Level 26) können Sie einem
TextView
, um die Textgröße zu verwenden
automatisch maximiert oder minimiert, um das Layout je nach
Eigenschaften und Grenzen von TextView
. Mit dieser Einstellung können Sie
mit dynamischen Inhalten die Textgröße
auf verschiedenen Bildschirmen optimieren.
Die Support Library 26.0 unterstützt die TextView
mit automatischer Größenanpassung
auf Geräten mit Android-Version 8.0 (API-Level 26) oder niedriger.
Das Paket android.support.v4.widget
enthält das TextViewCompat
.
-Klasse, um auf abwärtskompatible Funktionen zuzugreifen.
Automatische Größe von TextView einrichten
Sie können entweder das Framework oder die Support Library verwenden, um die automatische Größenanpassung von
TextView
programmatisch oder in XML. Bis
die XML-Attribute festgelegt haben, können Sie auch die Eigenschaften
in Android Studio.
Es gibt drei Möglichkeiten, die automatische Größenanpassung von TextView
einzurichten:
die in den folgenden Abschnitten beschrieben werden:
Hinweis: Wenn Sie in einer XML-Datei die automatische Größenanpassung festlegen,
empfohlen, der Wert „wrap_content“ zu verwenden für die
layout_width
- oder layout_height
-Attribut eines
TextView
Dies könnte zu
zu unerwarteten Ergebnissen führen.
Standard
In der Standardeinstellung kann die Größe von TextView
automatisch angepasst werden.
gleichmäßig auf horizontalen und vertikalen Achsen verteilt.
- Um die Standardeinstellung programmatisch zu definieren, rufen Sie die Methode
<ph type="x-smartling-placeholder"></ph>
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
-Methode. Zum DeaktivierenAUTO_SIZE_TEXT_TYPE_NONE
angeben die automatische Größenanpassung oderAUTO_SIZE_TEXT_TYPE_UNIFORM
, um die horizontalen und vertikalen Achsen gleichförmig skalieren. - Verwenden Sie den Namespace
android
, um die Standardeinstellung in XML zu definieren. und legenautoSizeTextType
-Attribut auf none oder Uniform.
Hinweis: Die Standardabmessungen für einheitliche
Skalierung minTextSize = 12sp
,
maxTextSize = 112sp
und granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
Standardeinstellung mithilfe der Support Library definieren
- Um die Standardeinstellung programmatisch über die Support Library zu definieren,
ruf die
<ph type="x-smartling-placeholder"></ph>
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
. . Geben Sie eine Instanz desTextView
-Widgets und einen der Texttypen an. wieTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
oderTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
- Um die Standardeinstellung in XML über die Support Library zu definieren, verwende die Methode
app
-Namespace und legen Sie denautoSizeTextType
fest auf none oder 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>
Leseeinheit
Sie können einen Bereich von minimalen und maximalen Textgrößen sowie eine
die die Größe der einzelnen Schritte angibt. Die
TextView
skaliert einheitlich in einem Bereich zwischen den
für die Mindest- und Maximalgröße. Jedes Inkrement erfolgt als Schritt
die im Attribut „Detaillierungsgrad“ festgelegt ist.
- Um einen Textgrößenbereich und eine Dimension programmatisch zu definieren, rufen Sie
die
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Geben Sie den Höchst- und Mindestwert sowie den Detaillierungsgrad an. Wert und alleTypedValue
Dimensionseinheit. - Um einen Textgrößenbereich und eine Dimension in XML zu definieren, verwende die
android
. Namespace und Set folgende Attribute: <ph type="x-smartling-placeholder">- </ph>
- Legen Sie die
autoSizeTextType
entweder auf none oder uniform. Der Wert none ist die Standardeinstellung. Mit uniformTextView
skaliert gleichmäßig horizontal und vertikalen Achsen. - Legen Sie
autoSizeMinTextSize
fest,autoSizeMaxTextSize
, undautoSizeStepGranularity
zum Definieren der Dimensionen für die automatische Größenanpassung vonTextView
- Legen Sie die
<?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" />
Detaillierungsgrad mithilfe der Support Library definieren
- Um einen Bereich von Textgrößen und eine Dimension programmatisch über die
Support Library, unter der
<ph type="x-smartling-placeholder"></ph>
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. . Geben Sie den Maximalwert, den Minimalwert, den Detaillierungsgrad und eine beliebigeTypedValue
-Dimensionseinheit. - Um einen Bereich von Textgrößen und eine Dimension in XML über die
Bibliothek, verwenden Sie den Namespace
app
und legen Sie denautoSizeText
,autoSizeMinTextSize
,autoSizeMaxTextSize
undautoSizeStepGranularity
-Attribute in der Layout-XML-Datei angeben.
<?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>
Voreingestellte Größen
Mit vordefinierten Größen können Sie die Werte angeben,
Auswahlmöglichkeiten für die automatische Textgröße von TextView
.
-
Wenn Sie voreingestellte Größen verwenden möchten,
TextView
programmatisch aufrufen,setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
. Geben Sie ein Array mit Größen und alleTypedValue
an Dimensionseinheit für die Größe. -
Wenn Sie voreingestellte Größen verwenden möchten,
TextView
in XML,android
verwenden Namespace und legen Sie die folgenden Attribute fest: <ph type="x-smartling-placeholder">- </ph>
autoSizeTextType
festlegen entweder auf none oder uniform. Der Parameter none ist der Standardwert und mit uniformTextView
skaliert gleichmäßig horizontal und vertikalen Achsen.- Legen Sie die
autoSizePresetSizes
einem Array voreingestellter Größen hinzu. Um auf das Array als Ressource, definiere das Array inres/values/arrays.xml
. -Datei.
<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" />
Voreingestellte Größen in der Supportbibliothek einrichten
- Wenn Sie voreingestellte Größen verwenden möchten,
TextView
programmatisch Support-Bibliothek erhalten haben, rufen Sie die <ph type="x-smartling-placeholder"></ph>TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
. Geben Sie eine Instanz der KlasseTextView
an, eine und eine beliebigeTypedValue
-Dimensionseinheit für die Größe ändern. - Wenn Sie voreingestellte Größen verwenden möchten,
TextView
in XML über die Support Library, verwenden Sie dieapp
-Namespace und legen SieautoSizeTextType
undautoSizePresetSizes
-Attribute in der Layout-XML-Datei angeben.
<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>
Weitere Informationen
Weitere Informationen zur automatischen Größenanpassung eines TextView
bei der Arbeit mit dynamischen
Inhalt, ansehen
Android Jetpack: Automatische Skalierung von TextView