Android TextView行间填充

我有一个显示长文本的TextView。我想在行之间留出一些空间,就像CSS中的line-height属性一样。我该怎么做呢?

182191 次浏览

你可以在XML文件中使用lineSpacingExtralineSpacingMultiplier

你可以查看android:lineSpacingExtra并将其应用到你的XML中

附加信息在本页上

或相关方法public void setLineSpacing (float add, float mult)

附加信息here . .

你可以使用TextView.setLineSpacing(n,m)函数。

如果你想在文本之间填充,试试LineSpacingExtra="10sp"

<TextView
android:layout_width="match_parent"
android:layout_height="180dp"
android:lineSpacingExtra="10sp"/>

添加android:lineSpacingMultiplier="0.8"可以使行间距为80%。

这个补充答案显示了改变行间距的效果。

enter image description here

您可以设置乘数和/或额外的间距

textView.setLineSpacing(float add, float mult)

或者你可以用

int lineHeight = textView.getLineHeight();
float add = tvSampleText.getLineSpacingExtra();          // API 16+
float mult = tvSampleText.getLineSpacingMultiplier();    // API 16+

公式在哪里

lineHeight = fontMetricsLineHeight * mult + add

默认的乘数是1,默认的额外间距是0

你可以在XML文件中使用lineSpacingExtralineSpacingMultiplier

lineSpacingExtra增加TextView文本行之间的额外间距

<TextView
android:lineSpacingExtra="4dp" />

lineSpacingMultiplier作为线空间高度的比例因子:

<TextView
android:lineSpacingMultiplier="0.8" />

换句话说,每一行的高度将是height * multiplier + extra

你可以用2磅


1. < >强lineSpacingExtra: 它用于dp间距

android:lineSpacingExtra="4dp"

<强> 2。lineSpacingMultiplie: 它用于相对比例

android:lineSpacingMultiplier="0.8"

作为上述解决方案的扩展答案

记住,你可以添加<item name="android:lineHeight">16sp</item>来直接设置行高,但根据上面的文档,行是这样工作的-

Explicit height between lines of text. If set, this will override the values set for lineSpacingExtra and lineSpacingMultiplier.
<attr name="lineHeight" format="dimension" />

因此,请确保使用lineSpacingExtra & lineSpacingMultiplierlineHeight之一,而不是两者都使用。

截至2021年11月16日 我使用这一行来增加行空间的高度:

android:lineHeight="25dp"

对我来说,其他答案没有帮助,因为可能他们更新了属性,在这个版本中有很多东西发生了变化。