如果API <26,如何实现android.support.v4.widget.TextViewCompat自动调整文本大小

时间:2019-04-08 21:44:15

标签: android android-support-library support-v4

我正在尝试在我的应用程序中实现新的textview自动调整大小功能。我需要定位到API 21,然后使用android.support.v4.widget.TextViewCompat阅读有关向后兼容性的内容,但实际上我不知道如何实现。

    <android.support.v4.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:autoSizeMaxTextSize="100sp"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeStepGranularity="2sp"
        android:autoSizeTextType="uniform"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

此代码是完全错误的,因为“ Hello World!”文字消失。

与此代码同时显示:

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:autoSizeMaxTextSize="100sp"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeStepGranularity="2sp"
        android:autoSizeTextType="uniform"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

...看起来不错,但是编辑器继续警告最低API级别26 ...

这是我的Gradle实现:

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-core-utils:28.0.0'
    implementation 'com.github.bumptech.glide:glide:3.8.0'
    implementation 'com.android.support:support-v4:28.0.0'

编辑:当我尝试使用android.support.v7.widget.AppCompatTextView时,我发现了另一个问题(Java):

TextViewCompat textViewCompact;
textViewCompact = findViewById(R.id.TextView1);

最后一行被标记为错误:“类型参数T具有不兼容的上限:View和TextViewCompact” 我开始考虑继续使用TextView并通过以下方式自动调整其大小:

TextView textView = findViewById(R.id.TextView1);
TextViewCompat.setAutoSizeTextTypeWithDefaults(textView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

这是正确的使用方式吗?

1 个答案:

答案 0 :(得分:0)

在xml

<android.support.v7.widget.AppCompatTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:autoSizeMaxTextSize="100sp"
    app:autoSizeMinTextSize="8sp"
    app:autoSizeStepGranularity="2sp"
    app:autoSizeTextType="uniform"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

在Java中

    AppCompatTextView textView = findViewById(R.id.text);
    TextViewCompat.setAutoSizeTextTypeWithDefaults(textView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);