【问题标题】:How to calculate letterSpacing for TextView from sketch values?如何从草图值计算 TextView 的 letterSpacing?
【发布时间】:2016-08-23 12:17:08
【问题描述】:

在设计中,我有一个文本字段,文本大小为 16,字符间距为 0.6

但是,如果我为TextViewandroid:letterSpacing 属性设置此值,间距将比设计中的大得多。

那么,将sketch值转换为android值的方法是什么?

【问题讨论】:

    标签: android textview sketch-3


    【解决方案1】:

    根据 Romain Guy 的说法,Android 使用“1 em = 字体大小”的定义,所以你只需这样做

    setLetterSpacing(characterSpacing / textSize)
    

    ...只要确保这些值的单位相同(dp vs px)

    【讨论】:

    • 非常感谢!我刚刚检查了它,它的工作原理! :)
    • 不适合我,间距比草图中的小
    • 这在material.io/design/typography/the-type-system.html 有文档,但指定了 sp 作为字体大小,所以:Android letter spacing = Sketch letter spacing / font size in sp
    • 对。 Zeplin 使用相同的方法。
    【解决方案2】:

    如果 Sketch 提供了 Points 中的字母间距值,那么转换如下:

    float textSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,  textSizeInSp, displayMetrics);
    float letterSpacingPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT,  sketchLetterSpacing, displayMetrics); 
    float androidLetterSpacing = letterSpacingPx / textSizePx
    return androidLetterSpacing;
    

    【讨论】:

      【解决方案3】:

      查看 android:textScaleX

      根据您需要多少间距,这可能会有所帮助。这是唯一与 TextView 中的字母间距相关的东西。

      【讨论】:

      • 无关紧要。例如,在 Sketch 中我有 0.58。这意味着我有 0 + .58。所以它的间距应该大于原始( 0 )间距。如果我使用 textScaleX,那么我会更改比例。在这种情况下,0.58
      猜你喜欢
      • 2020-04-03
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      相关资源
      最近更新 更多