Avec Android 8.0 (niveau d'API 26) ou version ultérieure, vous pouvez configurer une
TextView
pour définir la taille du texte
se déplient ou se replient automatiquement pour remplir sa mise en page en fonction
Caractéristiques et limites de TextView
. Ce paramètre vous permet
optimiser la taille du texte sur différents écrans grâce au contenu dynamique.
La bibliothèque Support 26.0 est entièrement compatible avec le dimensionnement automatique de TextView
sur les appareils équipés d'Android 8.0 (niveau d'API 26) ou version antérieure.
Le package android.support.v4.widget
contient le TextViewCompat
.
pour accéder aux fonctionnalités de manière rétrocompatible.
Configurer la taille automatique de TextView
Vous pouvez utiliser le framework ou la bibliothèque Support pour configurer le dimensionnement automatique
TextView
par programmation ou en XML. À
définir les attributs XML, vous pouvez également utiliser le composant Properties
dans Android Studio.
Il existe trois façons de configurer le dimensionnement automatique de TextView
:
décrits dans les sections suivantes:
Remarque: Si vous définissez le dimensionnement automatique dans un fichier XML,
recommandé d'utiliser la valeur "wrap_content" pour le
les attributs layout_width
ou layout_height
d'un
TextView
Vous pourriez ainsi générer
des résultats inattendus.
Par défaut
Le paramètre par défaut autorise le dimensionnement automatique de TextView
à l'échelle.
uniformément sur les axes horizontaux et verticaux.
- Pour définir le paramètre par défaut de manière programmatique, appelez la méthode
<ph type="x-smartling-placeholder"></ph>
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
. FournissezAUTO_SIZE_TEXT_TYPE_NONE
pour désactiver la fonctionnalité de dimensionnement automatique ouAUTO_SIZE_TEXT_TYPE_UNIFORM
pour mettre à l'échelle les axes horizontal et vertical de manière uniforme. - Pour définir le paramètre par défaut en XML, utilisez l'espace de noms
android
. et définissezautoSizeTextType
sur none ou uniforme.
Remarque: Les dimensions par défaut des variables uniformes
le scaling sont de minTextSize = 12sp
,
maxTextSize = 112sp
et granularity = 1px.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
Définir le paramètre par défaut à l'aide de la bibliothèque Support
- Pour définir le paramètre par défaut par programmation via la bibliothèque Support,
appelle la méthode
<ph type="x-smartling-placeholder"></ph>
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
. Fournissez une instance du widgetTextView
et l'un des types de texte. commeTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
ouTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
- Pour définir le paramètre par défaut au format XML via la bibliothèque Support, utilisez la méthode
Espace de noms
app
et définissezautoSizeTextType
sur none ou 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>
Précision
Vous pouvez définir une plage de tailles de texte minimale et maximale, ainsi qu'une
qui spécifie la taille de chaque étape. La
TextView
effectue un scaling uniforme dans une plage comprise entre les
les attributs de taille minimale et maximale. Chaque incrément se produit en tant que
taille définie dans l'attribut de précision.
- Pour définir une plage de tailles de texte et une dimension de manière programmatique, appelez
la
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Indiquez la valeur maximale, la valeur minimale et le niveau de précision. et toute valeurTypedValue
unité de dimension. - Pour définir une plage de tailles de texte et une dimension au format XML, utilisez l'
android
et définir les attributs suivants: <ph type="x-smartling-placeholder">- </ph>
- Définissez le paramètre
autoSizeTextType
sur none ou uniform. La valeur none est la valeur par défaut, tandis que la valeur uniformTextView
effectue un scaling uniforme sur les axes horizontal et des axes verticaux. - Définissez le
autoSizeMinTextSize
,autoSizeMaxTextSize
, etautoSizeStepGranularity
afin de définir les dimensions pour le dimensionnementTextView
- Définissez le paramètre
<?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" />
Définir la précision à l'aide de la bibliothèque Support
- Pour définir une plage de tailles de texte et une dimension de manière programmatique via le
de la bibliothèque Support, appelez la fonction
<ph type="x-smartling-placeholder"></ph>
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. Indiquez la valeur maximale, la valeur minimale, la valeur de précision et toute unité de dimensionTypedValue
. - Pour définir une plage de tailles de texte et une dimension au format XML via l'API
bibliothèque, utilisez l'espace de noms
app
et définissezautoSizeText
,autoSizeMinTextSize
,autoSizeMaxTextSize
etautoSizeStepGranularity
dans le fichier XML de mise en page.
<?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>
Tailles prédéfinies
Les tailles prédéfinies vous permettent de spécifier les valeurs
TextView
sélectionne automatiquement le texte.
-
Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextView
par programmation, appelez la méthodesetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
. Fournissez un tableau de tailles et n'importe quelTypedValue
pour la taille. -
Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextView
en XML, utilisez la commandeandroid
et définissez les attributs suivants: <ph type="x-smartling-placeholder">- </ph>
- Définir l'élément
autoSizeTextType
sur none ou uniform. La valeur none est la valeur par défaut, et la valeur uniformTextView
effectue un scaling uniforme sur les axes horizontal et des axes verticaux. - Définissez le paramètre
autoSizePresetSizes
à un tableau de tailles prédéfinies. Pour accéder au tableau en tant que ressource, définissez le tableau dansres/values/arrays.xml
.
- Définir l'élément
<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" />
Configurer des tailles prédéfinies à l'aide de la bibliothèque Support
- Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextView
de façon programmatique via la bibliothèque Support, appelez <ph type="x-smartling-placeholder"></ph>TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
. Fournissez une instance de la classeTextView
, une tableau de tailles et toute unité de dimensionTypedValue
pour la taille. - Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextView
en XML via la bibliothèque Support, utilisez laapp
, puis définissez les paramètresautoSizeTextType
etautoSizePresetSizes
dans le fichier XML de mise en page.
<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>
Ressources supplémentaires
Pour en savoir plus sur le dimensionnement automatique d'une TextView
lorsque vous utilisez des créations dynamiques
contenu, regarder
Android Jetpack: dimensionnement automatique de TextView