最近几天一直在尝试解决这个问题,但没有成功......
我现在正在学习android,目前正在创建一个带有历史的计算器作为我的学习项目。我有一个负责显示所有历史记录的 TextView……我使用的是一种看起来像计算器字体的数字字体,但这仅适用于数字、小数和逗号。我希望所有运算符都以不同的字体突出显示(目前为 Arial Narrow)。我已经能够使用可扩展的字符串很好地工作,在该字符串中我指定了字体颜色以及使用 CustomTypeFaceSpan 类应用我的自定义字体的字体。
问题......当我混合字体时,行高似乎存在问题,所以我发现这篇文章演示了使用另一个自定义定义的类将行高应用于每行添加的可跨文本:
public class CustomLineHeightSpan implements LineHeightSpan{
private final int height;
public CustomLineHeightSpan(int height){
this.height = height;
}
@Override
public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v, FontMetricsInt fm) {
fm.bottom += height;
fm.descent += height;
}
}
这似乎不起作用,我不知道为什么。如果我不应用不同的字体,那么它会按预期显示,第一行上方没有空格,行间距约为 5px。当我应用备用字体时,第一行文本上方有大约 10 到 15 像素的空间,行距大约是 10 到 15 像素。
字体大小没有区别,只有字体。我错过了什么。我实现了 CustomLineHeightSpan,它实现了 LineHeightSpan 并覆盖了 chooseHeight 方法。我这样称呼它:
WordtoSpan.setSpan(new CustomLineHeightSpan(10), operatorPositions.get(ii), operatorPositions.get(ii) + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
我对 CustomLineHeightSpan 的调用似乎并不重要。没有什么变化...
任何人都知道我错过了什么......我确定这是一个“我不敢相信我错过了”的答案,但目前似乎无法弄清楚。
感谢您的帮助:-)