2

我想将多个跨度添加到具有可配置行空间的文本视图中。我使用 android 中定义的 LineHeightSpan 类。但似乎它在 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);

我该如何解决这个问题?

4

1 回答 1

4

如果你有Marshmallow v6.0我担心在这种情况下你不能做任何事情,因为它是在这里报告的错误。您要么必须将设备升级到v6.0.1该版本中已修复的设备,要么有条件地从 Marshmallow 6.0 中删除您的逻辑

编辑:更多参考检查这个。

于 2016-07-24T08:43:39.707 回答