[Android]文本多的时候让TextView的字体自动变小
为了让 TextView 的字体在文本过多时自动变小,以显示全部文本,可以使用 Android 的 autoSizeTextType 属性。该属性允许 TextView 在空间不足时自动调整字体大小。
在 XML 中,可以这样设置:
<TextView
android:id="@+id/tv_1_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:maxLines="1"
android:text="轮 18"
android:textColor="@color/color_title"
android:textSize="12sp"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="8sp"
android:autoSizeMaxTextSize="12sp"
android:autoSizeStepGranularity="1sp" />
解释
-
android:autoSizeTextType="uniform": 启用自动调整字体大小功能。
-
android:autoSizeMinTextSize="8sp": 设置文本的最小字体大小。可以根据需要调整此值。
-
android:autoSizeMaxTextSize="12sp": 设置文本的最大字体大小。与 android:textSize 保持一致。
-
android:autoSizeStepGranularity="1sp": 设置字体大小调整的步长。这个属性决定了字体大小调整的粒度。
注意事项
-
兼容性:autoSizeTextType 属性在 API 26(Android 8.0 Oreo)及以上版本中可用。如果需要兼容低版本,可以使用支持库中的 AppCompatTextView。
-
支持库中的 AppCompatTextView: 如果需要支持较低版本的 Android,可以在布局中使用 AppCompatTextView,并确保在项目中引入了 androidx.appcompat:appcompat 库。
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_1_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:maxLines="1"
android:text="轮 18"
android:textColor="@color/color_title"
android:textSize="12sp"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="8sp"
app:autoSizeMaxTextSize="12sp"
app:autoSizeStepGranularity="1sp" />