Android M 及更低版本中的 LineHeightSpan
LineHeightSpan in Android M and lower versions
我想将多个跨度添加到具有可配置行 space 的文本视图。我使用 android 中定义的 LineHeightSpan class。但它似乎在 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);
我该如何解决这个问题?
如果您遇到 Marshmallow v6.0
恐怕您在这种情况下无能为力,因为它报告了错误 Here。您要么必须将设备升级到 v6.0.1
,因为它已在该版本中得到修复,要么有条件地从 Marshmallow 6.0
中删除您的逻辑
编辑: 以获得更多参考
我想将多个跨度添加到具有可配置行 space 的文本视图。我使用 android 中定义的 LineHeightSpan class。但它似乎在 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);
我该如何解决这个问题?
如果您遇到 Marshmallow v6.0
恐怕您在这种情况下无能为力,因为它报告了错误 Here。您要么必须将设备升级到 v6.0.1
,因为它已在该版本中得到修复,要么有条件地从 Marshmallow 6.0
编辑: 以获得更多参考