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

Android Studio中如何设置TextView每行的行高?

Android TextView 自定义固定行高(指定字号+多行显示)

你可以通过以下几种方式实现需求:

方法一:API 28 及以上直接用 XML 属性(推荐)

从 Android 9.0(API 28)开始,TextView 新增了android:lineHeight属性,可直接设置固定行高,搭配android:textSize指定字号,同时开启多行显示:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp"
    android:lineHeight="25dp"
    android:maxLines="100" <!-- 设为足够大的数值,或直接去掉让内容自动换行 -->
    android:text="你的多行文本内容" />

如果不需要限制最大行数,直接移除android:maxLines属性即可,TextView 默认支持多行换行。

方法二:兼容低版本(API <28)的 XML 方案

对于低于 API28 的版本,可通过android:lineSpacingExtra间接实现固定行高,计算逻辑为目标行高 - 文字大小,注意单位尽量统一(可近似将 dp 转为 sp):

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp"
    android:lineSpacingExtra="7sp" <!-- 25dp 近似转换为25sp,减去18sp得到额外间距 -->
    android:maxLines="100"
    android:text="你的多行文本内容" />

这种方式存在单位转换误差,追求精准的话建议用代码动态计算。

方法三:代码动态设置(兼容所有版本)

要适配全版本且精准控制行高,用代码计算是最稳妥的方式:

TextView textView = findViewById(R.id.your_textview);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);

// 将25dp转换为当前设备的像素值
int lineHeightPx = (int) TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP,
    25,
    getResources().getDisplayMetrics()
);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    // API28+直接调用系统方法设置行高
    textView.setLineHeight(lineHeightPx);
} else {
    // 低版本计算额外行间距:目标行高 - 文字实际高度
    Paint paint = textView.getPaint();
    float textHeight = paint.getFontMetrics().bottom - paint.getFontMetrics().top;
    float extraSpacing = lineHeightPx - textHeight;
    textView.setLineSpacing(extraSpacing, 1.0f); // 倍数设为1,仅添加额外间距
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:36:51