TextView autoSizeTextType在Compat中不起作用

时间:2017-07-12 13:42:19

标签: android xml textview android-support-library

我尝试使用autoSizeTextType。 我的 minSdk 是24,所有工具都是26, compat 也是26-beta2。

通过代码尝试使它们可调:

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

和xml:

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

有什么想法吗?我开始相信它目前被窃听

4 个答案:

答案 0 :(得分:17)

好的,所以有效的设置组合:

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

您还需要appcompat-v7库作为模块build.gradle文件中的依赖项。

dependencies {
    implementation 'com.android.support:appcompat-v7:27.1.1'
}

答案 1 :(得分:4)

要理解的关键是使用 app:autoSizeTextType ,而不是 android:autoSizeTextType

根据documentation

  

要通过支持库定义XML的默认设置,请使用 app命名空间,并将autoSizeTextType属性设置为none或统一。

<?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>

答案 2 :(得分:2)

我以编程方式解决了它。

$.ready

和XML:

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

答案 3 :(得分:2)

由于android.support.v7已迁移到androidX,我想更新此线程

我在使文本完全显示时遇到了问题,而对我来说解决的是其中一条注释中关于singleLine的注释:

旁注,请确保不要设置android:singleLine =“ true”,否则自动缩小将无法正常工作。

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/tempText"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:maxLines="1"
        android:textColor="@color/white"
        android:textSize="60dp"
        app:autoSizeMinTextSize="20dp"
        app:autoSizeTextType="uniform"
        tools:text="99&#xb0;" />