TextView不能自动调整大小

时间:2019-01-29 10:59:34

标签: java android

我在线性布局中有一个文本视图

<LinearLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8"
        android:orientation="vertical"
        android:id="@+id/textLayout"
        android:background="@drawable/bg"
        android:gravity="center"
        android:layout_gravity="center">
        <TextView
            android:id="@+id/detail_text"
            android:text="hello"
            android:background="#55000000"
            android:lineSpacingExtra="5dp"
            app:autoSizeMinTextSize="12sp"
            app:autoSizeMaxTextSize="100sp"
            app:autoSizeStepGranularity="2sp"
            app:autoSizeTextType="uniform"
            android:textColor="@android:color/white"
            android:layout_margin="10dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </TextView>
    </LinearLayout>

在build.gradle中,我有

dependencies {
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.google.android.gms:play-services-ads:11.4.2'
    implementation 'com.android.support:support-compat:26.0.0'
}

但是它仅显示固定大小(最小大小)的文本。不会根据电话宽度自动调整大小;

3 个答案:

答案 0 :(得分:1)

不建议将wrap_content用于layout_heightlayout_width,因为它可能不起作用。您需要为layout_height使用固定值。

来自docs

  

如果您在XML文件中设置了自动调整大小,则不建议使用   layout_width或layout_height属性的值“ wrap_content”   一个TextView。可能会产生意外的结果。

答案 1 :(得分:0)

您需要为layout_width或layout_height分配一个固定值,自动文本大小调整属性才能起作用。

答案 2 :(得分:0)

检查此方法:

TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)

它看起来像这样

TextViewCompat.setAutoSizeTextTypeWithDefaults(
        findViewById(R.id.detail_text), 
        TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM)
也来自https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview#setting-textview-autosize

使用支持库

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