Android M及更低版本中的线宽跨度

Android M及更低版本中的线宽跨度,android,android-6.0-marshmallow,spannablestringbuilder,Android,Android 6.0 Marshmallow,Spannablestringbuilder,我想用可配置的行空间向textview添加多个span。我使用android中定义的LineHeightSpan类。但它在安卓M和更低版本中的表现似乎有所不同 下面是Android较低版本的结果 这就是安卓M中的情况 下面是我如何在代码中实现的: 这是我对LineHeightSpan的实现: public class VerticalMarginSpan implements LineHeightSpan { private final int value; public

我想用可配置的行空间向textview添加多个span。我使用android中定义的LineHeightSpan类。但它在安卓M和更低版本中的表现似乎有所不同 下面是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);

如何解决此问题?

如果您使用的是
棉花糖v6.0
,恐怕您在这种情况下无法执行任何操作,因为它报告了错误。您必须将设备升级到
v6.0.1
,因为它在该版本中已被修复,或者有条件地从棉花糖6.0中删除您的逻辑


编辑:更多参考

我在Android M中解决了这个问题,在textview中添加了字体间距,而不是应用行高span。你节省了我的时间。非常感谢。