You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让LinearLayout内的四个TextView自动适配文本大小

让LinearLayout内TextView自适应屏幕且字号统一的方案

问题场景

  • 大屏幕设备上,四个水平排列的TextView可完整显示:
    大屏幕显示效果
  • 小屏幕设备上,因空间不足,部分TextView无法完全展示:
    小屏幕显示效果

需求:小屏幕下所有TextView自动缩小文本大小,适配屏幕宽度,且所有文本字号保持一致。

修改方案(推荐使用)

通过给TextView添加自动缩放属性,配合LinearLayout的权重分配空间,实现自适应效果:

  1. 调整LinearLayout属性,添加权重总和并明确水平方向
  2. 每个TextView设置权重,均分可用宽度
  3. 给所有TextView配置统一的自动缩放规则,确保字号同步调整

修改后的完整XML代码

<LinearLayout
    android:id="@+id/infoLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="4"
    app:layout_constraintStart_toStartOf="@+id/name"
    app:layout_constraintEnd_toStartOf="@+id/more"
    app:layout_constraintTop_toBottomOf="@+id/name"
    android:paddingTop="6dp">

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawablePadding="2dp"
        android:gravity="center"
        android:textColor="@color/text_black_60"
        android:textSize="12sp"
        android:fontFamily="@font/open_sans_regular"
        android:singleLine="true"
        android:ellipsize="end"
        android:autoSizeTextType="uniform"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeMaxTextSize="12sp"
        android:autoSizeStepGranularity="1sp"
        app:drawableStartCompat="@drawable/ic_date"
        app:drawableTint="@color/text_black_60"
        tools:text="11/02/2021" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/time"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="8dp"
        android:drawablePadding="2dp"
        android:gravity="center"
        android:textColor="@color/text_black_60"
        android:textSize="12sp"
        android:fontFamily="@font/open_sans_regular"
        android:singleLine="true"
        android:ellipsize="end"
        android:autoSizeTextType="uniform"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeMaxTextSize="12sp"
        android:autoSizeStepGranularity="1sp"
        app:drawableStartCompat="@drawable/ic_time"
        app:drawableTint="@color/text_black_60"
        tools:text="11:02 am" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/stop"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="8dp"
        android:drawablePadding="2dp"
        android:gravity="center"
        android:textColor="@color/text_black_60"
        android:textSize="12sp"
        android:fontFamily="@font/open_sans_regular"
        android:singleLine="true"
        android:ellipsize="end"
        android:autoSizeTextType="uniform"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeMaxTextSize="12sp"
        android:autoSizeStepGranularity="1sp"
        app:drawableStartCompat="@drawable/ic_location"
        app:drawableTint="@color/text_black_60"
        tools:text="20" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/distance"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="8dp"
        android:drawablePadding="2dp"
        android:gravity="center"
        android:textColor="@color/text_black_60"
        android:textSize="12sp"
        android:fontFamily="@font/open_sans_regular"
        android:singleLine="true"
        android:ellipsize="end"
        android:autoSizeTextType="uniform"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeMaxTextSize="12sp"
        android:autoSizeStepGranularity="1sp"
        app:drawableStartCompat="@drawable/ic_distance"
        app:drawableTint="@color/text_black_60"
        tools:text="1264 Mi" />

</LinearLayout>

关键修改说明

  • LinearLayout权重配置:android:weightSum="4"和每个TextView的android:layout_weight="1"让四个控件均分容器宽度,避免空间不足时被遮挡。
  • 自动缩放属性:android:autoSizeTextType="uniform"开启自动缩放,autoSizeMinTextSize和autoSizeMaxTextSize限定字号范围,autoSizeStepGranularity设置缩放步长,确保所有TextView字号同步调整、保持一致。
  • 移除maxWidth:因已通过权重分配空间,无需再限制单个TextView的最大宽度。

内容的提问来源于stack exchange,提问作者Elbrus Novruzlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:24:24