Android M及更低版本的LineHeightSpan

时间:2016-07-23 13:39:00

标签: android android-6.0-marshmallow spannablestringbuilder

我想在具有可配置行空间的textview中添加多个span。我使用android中定义的LineHeightSpan类。但它似乎在Android M和更低版本中表现不同 这是Android较低版本的结果

enter image description here

这就是它在Android M中的样子 enter image description here

以下是我在代码中的实现方式: 这是我对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);

我如何解决问题?

1 个答案:

答案 0 :(得分:4)

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

编辑以获取更多参考资料check this.