我可以知道android xml中的lineHeight和lineSpacingExtra有什么区别。我尝试将两者进行比较,但结果却有所不同(我需要lineHeight函数,但仅API 28支持该函数)。
这是我的代码的一部分:
左:
android:textSize="14sp"
android:lineSpacingExtra="6dp"
右:
android:textSize="14sp"
android:lineHeight="20dp"
结果:
有什么解决办法吗? 谢谢。
答案 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中提供了更多信息(包括配额在内)。