Android lineHeight vs lineSpacingExtra

hal*_*z12 7 android styles textview

我可以知道 android xml 中 lineHeight 和 lineSpacingExtra 之间有什么区别吗?我试图比较两者,但得到了不同的结果(我需要 lineHeight 函数,但它仅在 API 28 中受支持)。

这是我的代码的一部分:

剩下:

android:textSize="14sp"

android:lineSpacingExtra="6dp"

对:

android:textSize="14sp"

android:lineHeight="20dp"

结果:

在此处输入图片说明

有什么解决办法吗?谢谢你。

Jak*_*eam 5

您提到要lineHeight在 API 28 之前的版本中进行设置,另一种方法是设置一个小的lineSpacingExtra/lineSpacingMultiplier值(如您所示)。否则,在这个相关问题中有很多解决方案可以自己设置行高。

我将简要介绍下面的差异,以及我的摘要和官方文档。

android:lineHeight是每条线的总高度。这包括文本以及顶部和底部的任何填充。

文本行之间的显式高度。如果设置,这将覆盖为 lineSpacingExtra 和 lineSpacingMultiplier 设置的值。

android:lineSpacingExtra是在每行文本(最后一行除外)之后添加的额外间距。

文本行之间的额外间距。该值不会应用于最后一行文本。

最后,您可能对android:lineSpacingMultiplier. 这类似于lineSpacingExtra,但使用当前高度的乘数(例如1.2)而不是固定值。

文本行之间的额外间距,作为乘数。该值不会应用于最后一行文本。

TextView 文档中提供更多信息(除了包含的配额)。


m.r*_*ter 5

MaterialTextView (MTV) 包括设置android:lineHeight.

如果您使用该app:前缀,它会向后兼容,直到 SDK 版本 21。

顺便说一句,在某些情况下(我相信这取决于你的风格,但我不确定),标准TextViews会自动替换为 MTV。(检查你的 LayoutInspector,你可能已经在不知情的情况下使用了它们)

如果您仍然想知道这些差异,Android 团队有一篇关于一般文本的精彩演讲;这应该可以在 16:50 左右解决您的问题。


小智 1

android:lineHeight 定义文本行之间的显式高度。而 android:lineSpacingExtra 定义了文本行之间的额外间距, 您可以阅读更多android_documentation_for_text_arributes