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_NONEpour désactiver la fonctionnalité de dimensionnement automatique ouAUTO_SIZE_TEXT_TYPE_UNIFORMpour 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éfinissezautoSizeTextTypesur 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 widgetTextViewet l'un des types de texte. commeTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONEouTextViewCompat.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
appet définissezautoSizeTextTypesur 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 valeurTypedValueunité de dimension. - Pour définir une plage de tailles de texte et une dimension au format XML, utilisez l'
androidet définir les attributs suivants: <ph type="x-smartling-placeholder">- </ph>
- Définissez le paramètre
autoSizeTextTypesur none ou uniform. La valeur none est la valeur par défaut, tandis que la valeur uniformTextVieweffectue un scaling uniforme sur les axes horizontal et des axes verticaux. - Définissez le
autoSizeMinTextSize,autoSizeMaxTextSize, etautoSizeStepGranularityafin 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
appet définissezautoSizeText,autoSizeMinTextSize,autoSizeMaxTextSizeetautoSizeStepGranularitydans 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
TextViewpar programmation, appelez la méthodesetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit). Fournissez un tableau de tailles et n'importe quelTypedValuepour la taille. -
Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextViewen XML, utilisez la commandeandroidet définissez les attributs suivants: <ph type="x-smartling-placeholder">- </ph>
- Définir l'élément
autoSizeTextTypesur none ou uniform. La valeur none est la valeur par défaut, et la valeur uniformTextVieweffectue 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
TextViewde 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 dimensionTypedValuepour la taille. - Pour utiliser des tailles prédéfinies afin de configurer l'ajustement automatique
TextViewen XML via la bibliothèque Support, utilisez laapp, puis définissez les paramètresautoSizeTextTypeetautoSizePresetSizesdans 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