Android lineHeight与lineSpacingExtra

时间:2019-01-15 11:05:43

标签: android textview styles

我可以知道android xml中的lineHeight和lineSpacingExtra有什么区别。我尝试将两者进行比较,但结果却有所不同(我需要lineHeight函数,但仅API 28支持该函数)。

这是我的代码的一部分:

左:

android:textSize="14sp"

android:lineSpacingExtra="6dp"

右:

android:textSize="14sp"

android:lineHeight="20dp"

结果:

enter image description here

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

3 个答案:

答案 0 :(得分:2)

MaterialTextView (MTV) 包括设置 android:lineHeight 的功能。

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

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

如果您仍然想知道这些差异,那么一般来说有一个关于文本的优秀talk by the android team;这应该会在 ~16:50 解决您的问题。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您提到要在API 28之前的版本中设置lineHeight,另一种方法是仅设置一个小的lineSpacingExtra / lineSpacingMultiplier值(如您所示)。否则,有许多解决方案可以自己在this related question中设置线高。

我将在摘要和官方文档中简要介绍以下差异。

android:lineHeight是每行的总高度。其中包括文本,以及顶部和底部的所有填充。

  

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

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

  

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

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

  

文本行之间的额外间隔,作为乘数。该值将不适用于文本的最后一行。

in the TextView documentation中提供了更多信息(包括配额在内)。