J'ai essayé d'utiliser autoSizeTextType
. Mon minSdk est 24, tous les outils sont 26 et compat ist 26-beta2 également.
Les rendre ajustables a été essayé avec du code:
dialogWeight.touchables.filterIsInstance<Button>().forEach {
TextViewCompat.setAutoSizeTextTypeWithDefaults(it,
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM) }
Et xml:
<Android.support.v7.widget.AppCompatTextView
Android:layout_height="match_parent"
Android:text="7"
Android:autoSizeTextType="uniform"/>
Des idées ? Je commence à croire qu'il est actuellement buggé
Ok, donc la combinaison de paramètres qui a fonctionné:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<Android.support.v7.widget.AppCompatTextView
Android:text="7"
app:autoSizeTextType="uniform"/>
Vous avez également besoin de la bibliothèque appcompat-v7 en tant que dépendance dans le fichier build.gradle de votre module.
dependencies {
implementation 'com.Android.support:appcompat-v7:27.1.1'
}
Je l'ai résolu par programme.
TextView number1 = findViewById(R.id.number_one);
TextViewCompat.setAutoSizeTextTypeWithDefaults(number1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
et le XML:
<TextView
Android:id="@+id/number_one"
Android:autoSizeTextType="uniform"
Android:gravity="center"
Android:text="1" />
La chose clé à comprendre est d’utiliserapp:autoSizeTextType
, par opposition àAndroid:autoSizeTextType
Par la documentation :
Pour définir le paramètre par défaut en XML via la bibliothèque de support, utilisez le app namespace et définissez l'attribut autoSizeTextType sur none ou sur uniforme.
<?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>