Android M 及更低版本中的 LineHeightSpan

LineHeightSpan in Android M and lower versions

我想将多个跨度添加到具有可配置行 space 的文本视图。我使用 android 中定义的 LineHeightSpan class。但它似乎在 Android M 和更低版本中表现不同 这里的结果是 Android

的低版本

这就是 Android M 中的样子

以下是我在代码中的实现方式: 这是我对 LineHeightSpan 的实现:

public class VerticalMarginSpan implements LineHeightSpan {

    private final int value;

    public VerticalMarginSpan(int value) {
        this.value = value;
    }

    @Override
    public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v,
                         Paint.FontMetricsInt fm) {
        fm.ascent -= value / 2;
        fm.descent += (value / 2);
    }
}

以及我如何使用它:

SpannableStringBuilder builder = new SpannableStringBuilder(tempStr);
    builder.setSpan(
            new VerticalMarginSpan(lineSpace),
            0,
            tempStr.length(),
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    txt.setText(builder);

我该如何解决这个问题?

如果您遇到 Marshmallow v6.0 恐怕您在这种情况下无能为力,因为它报告了错误 Here。您要么必须将设备升级到 v6.0.1,因为它已在该版本中得到修复,要么有条件地从 Marshmallow 6.0

中删除您的逻辑

编辑: 以获得更多参考