android - Android M 及更低版本中的 LineHeightSpan

标签 android android-6.0-marshmallow spannablestringbuilder

我想向具有可配置行间距的 TextView 添加多个跨度。我使用 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);

我该如何解决这个问题?

最佳答案

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

编辑:以获取更多引用 check this.

关于android - Android M 及更低版本中的 LineHeightSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542417/

相关文章:

android - 无法保护代码免受 Eclipse 中的逆向工程

Android 工具栏覆盖内容

android SPAN_EXCLUSIVE_EXCLUSIVE 无法正常工作

java - 创建新的 SpannableStringBuilder 返回 null

android - 通知在 API 23 上不起作用

java - SpannableStringBuilder 用 Regex 替换内容

android - 如何使用 OpenGL ES 将纹理加载到圆上

Android NDK.Build 命令失败。未定义引用。铛++ : error: linker command failed with exit code 1

android - 棉花糖权限应该仅在尚未授予时询问

Android 6 Marshmallow 权限无法正常工作