android textview 添加lineSpacingMultiplier 后首行和最后一行的ImageSpan不居中
时间: 2024-03-06 17:48:55 浏览: 225
这个问题可能是因为 `lineSpacingMultiplier` 属性导致的。当 `lineSpacingMultiplier` 不等于1时,文本行间距会被放大或缩小,这可能导致图片在垂直方向上不居中。
解决这个问题的方法是,给 TextView 设置 `includeFontPadding` 为 false,然后手动计算首行和最后一行的行间距并设置给 TextView。具体步骤如下:
1. 设置 `includeFontPadding` 为 false
```java
textView.setIncludeFontPadding(false);
```
2. 计算首行和最后一行的行间距
```java
int lineHeight = textView.getLineHeight();
int paddingTop = textView.getPaddingTop();
int paddingBottom = textView.getPaddingBottom();
int firstLineHeight = (int) (lineHeight * textView.getLineSpacingMultiplier());
int lastLineHeight = (int) (lineHeight * textView.getLineSpacingMultiplier());
int extraSpace = textView.getHeight() - paddingTop - paddingBottom - firstLineHeight - lastLineHeight;
int lineSpacingExtra = extraSpace / (textView.getLineCount() - 1);
```
3. 将计算出来的行间距设置给 TextView
```java
textView.setLineSpacing(lineSpacingExtra, textView.getLineSpacingMultiplier());
```
这样就可以解决图片不居中的问题了。
阅读全文