Android M及更低版本中的LineHeightSpan

问题描述 投票:0回答: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);

我该如何解决这个问题?

android android-6.0-marshmallow spannablestringbuilder
2个回答
4
投票

如果您遇到

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

编辑:以获取更多参考检查此。


0
投票

我明白了。 这个示例可以用垂直居中文本解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.