web-dev-qa-db-de.com

TextView autoSizeTextType funktioniert nicht in Compat

Ich habe versucht, autoSizeTextType zu verwenden. Mein minSdk ist 24, alle tools sind 26 und compat ist 26-beta2.

Sie anpassbar zu machen wurde durch Code versucht:

dialogWeight.touchables.filterIsInstance<Button>().forEach {
TextViewCompat.setAutoSizeTextTypeWithDefaults(it, 
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM) }

Und xml:

<Android.support.v7.widget.AppCompatTextView
Android:layout_height="match_parent"
Android:text="7"
Android:autoSizeTextType="uniform"/>

Irgendwelche Ideen ? Ich fange an zu glauben, dass es derzeit fehlerhaft ist

5
DeastinY

Okay, also die Kombination der Einstellungen, die funktioniert hat:

<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"/>

Sie benötigen außerdem die appcompat-v7-Bibliothek als Abhängigkeit in der build.gradle-Datei Ihres Moduls.

dependencies {
    implementation 'com.Android.support:appcompat-v7:27.1.1'
}
13
DeastinY

Ich habe es programmatisch gelöst.

TextView number1 = findViewById(R.id.number_one);
TextViewCompat.setAutoSizeTextTypeWithDefaults(number1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

und das XML:

  <TextView
        Android:id="@+id/number_one"
        Android:autoSizeTextType="uniform"
        Android:gravity="center"
        Android:text="1"  />
2
Nick

Der Schlüssel zum Verständnis ist die Verwendung von app:autoSizeTextType im Gegensatz zu Android:autoSizeTextType

Nach der Dokumentation :

Um die Standardeinstellung in XML über die Unterstützungsbibliothek zu definieren, verwenden Sie den App-Namespace und setzen Sie das autoSizeTextType-Attribut 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>
1
JHowzer