我创建了一个SpannableString
,第一个字符,最后 2 个字符比其余字符小。它看起来像这样:
sBBBBss
我想对齐较小的字符,以便它们与较大文本的顶部对齐,而不是底部(如它们所示)。
这可能吗?
我想我正在寻找类似这样的伪代码:
myAmount.setSpan(新相对对齐跨度(视图.TOP), 0, 1, 0);
我唯一的选择是创建一个新的布局,其中包含多个 TextView,我独立填充它们,并根据需要进行对齐。我认为这有点混乱,并且更喜欢使用 SpannableString 方法。
所以我找到了这个问题的答案,将其发布在这里以帮助下一个人。
我创建了一个帮助器类来包含调整跨度的方法,您可以使用以下语法调用它(这是将最后 2 个字符设置为在行中显示得更高):
SpannableString contentAmount = new SpannableString(amount);
contentAmount.setSpan(new SuperscriptSpanAdjuster(3.0/5.0), contentAmount.length() - 2, contentAmount.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
辅助类是:
/**
* This is a helper class to help adjust the alignment of a section of text, when using SpannableStrings to set text
* formatting dynamically.
*
*/
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;
public class SuperscriptSpanAdjuster extends MetricAffectingSpan {
double ratio = 0.5;
public SuperscriptSpanAdjuster() {
}
public SuperscriptSpanAdjuster(double ratio) {
this.ratio = ratio;
}
@Override
public void updateDrawState(TextPaint paint) {
paint.baselineShift += (int) (paint.ascent() * ratio);
}
@Override
public void updateMeasureState(TextPaint paint) {
paint.baselineShift += (int) (paint.ascent() * ratio);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)