gpt4 book ai didi

android - 使用 SpannableString 调整文本对齐方式

转载 作者:可可西里 更新时间:2023-11-01 19:10:10 27 4
gpt4 key购买 nike

我创建了一个 SpannableString,第一个字符和最后两个比其余字符小。它看起来像这样:

sBBBBss

我想对齐较小的字符,以便它们与较大文本的顶部对齐,而不是底部(如它们在此处显示的那样)。

这可能吗?

我想我正在寻找类似这样的伪代码:

myAmount.setSpan(新 RelativeAlignSpan(View.TOP), 0, 1, 0);

我唯一的另一种选择是创建一个新布局,其中包含多个 TextView,我独立填充它,并按我喜欢的方式对齐。我认为这有点困惑,我更愿意使用 SpannableString 方法。

最佳答案

所以我找到了这个问题的答案并将其张贴在这里以帮助下一个人。

我创建了一个帮助类来包含调整 Span 的方法,您可以使用此语法调用它(这是将最后 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);
}
}

关于android - 使用 SpannableString 调整文本对齐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com