我是一名UX架构师,与一个Android开发团队合作,他们大多是初级开发人员。我们在Android中正确设置线高时遇到了问题。
我们使用材料设计规范作为我们应用的指南。特别是,您可以在此处看到线高规范:
https://material.google.com/style/typography.html#typography-line-height
让我们以Body 2为例,规范规定类型为13sp或14sp,而行高(行高-相同的东西)应为24dp。
问题是这样的:这些开发人员告诉我,在代码中没有这样的方法来设置行高。相反,他们告诉我测量两行文本之间的距离,然后给他们这个测量值--假设是4dp。他们希望我们使用的每种文本样式都是这样。
我们使用"草图"〉"Zepelin流"进行规范。
我觉得很奇怪的是,可以创建一个字体样式(代码中很容易是class/style),它是13sp,行距是24dp,但不能设置行距,而是必须添加第三个度量。在Sketch或Zepelin中没有"行间"度量的位置。
这真的是这样做的吗,或者有一个合适的方法来设置行高?
9条答案
按热度按时间jckbn6z71#
我将从Android开发人员的Angular 解释这一点。
行高通常表示文本大小+顶部/底部“填充”。
所以,如果你的设计师写行高19 sp和文本大小15 sp,这意味着你需要有额外的填充4sp。
19sp - 15sp = 4sp。
要在布局中实现它,请使用
lineSpacingExtra
属性。实现行高的另一种方法是使用缩放。例如,
1.2
。这意味着间距是文本大小的120%。在上面的例子中,行高是19 sp,文本大小是15 sp。如果我们把它转换成比例,它变成。
19/15 = 1.26
要在布局中实现它,请使用
lineSpacingMultiplier
属性。vxf3dgd42#
因此,如果你设置乘数= 0,那么你可以得到线高是一样的额外。
rjzwgtxy3#
从API 28开始,我们现在有lineHeight
如果您正在使用某个样式,请不要忘记删除该应用程序:
或者用密码
yjghlzjz4#
这里有一种编程的方法。
aemubtdh5#
这对API 28之前和更高版本有效:
为“android:lineHeight”添加目标API以确保它不会覆盖“lineHeight”似乎可以做到这一点。
ttisahbt6#
以下是React Native的解决方案:添加调整行高https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomLineHeightSpan.java的跨距
我的设计同事过度使用线高,这是一个痛苦,它从来没有看起来正确后,渲染应用程序。
我将计划创建一个自定义TextView类,它通过XML接受一个arg,并在之后将其发布在这里。
qc6wkl3g7#
根据这个答案
https://stackoverflow.com/a/52735596/8668620
并添加了
太
wqlqzqxt8#
enter image description here您好,我们可以这样添加:应用程序:行高度=“42dp”
64jmpszr9#
TextViewCompat
的setLineHeight方法似乎对我有效,无论项目的最低SDK版本如何。