首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测量SpannableString的高度?

如何测量SpannableString的高度?
EN

Stack Overflow用户
提问于 2015-08-06 03:15:39
回答 1查看 635关注 0票数 3

我有一个显示不同跨度大小的SpannableString的TextView。我需要知道SpannableString中最后一个单词的确切高度,但我使用的方法是错误的。我做错了什么?

下面是我正在使用的测试代码

代码语言:javascript
复制
    SpannableStringBuilder spannableString = new SpannableStringBuilder("Some Text Some Text Some Text Some Text Some Text Some Text Some Text Some Text Some Text");
    spannableString.setSpan(new AbsoluteSizeSpan(10, true), 0, spannableString.length() / 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(new AbsoluteSizeSpan(15, true), spannableString.length()/3, 2 * spannableString.length()/3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(new AbsoluteSizeSpan(20, true), 2 * spannableString.length() / 3, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    surfaceView.setTranslationY(measureSpannableHeight());

private int measureSpannableHeight() {
    StaticLayout staticLayout = new StaticLayout(spannableString, new TextPaint(), 480, Layout.Alignment.ALIGN_NORMAL, 1, 0, false);
    return staticLayout.getHeight();
}

(表面视图的平移仅用于说明测量方法的高度结果)

EN

回答 1

Stack Overflow用户

发布于 2021-05-02 15:31:19

构造一个paint对象,在为paint设置等效的span属性后,您可以使用以下内容测量单词高度。

代码语言:javascript
复制
Paint mTextPaint = new Paint();
mTextPaint.setTextSize(20) // your span size
mTextPaint.setTypeface(typeface)

单词的大小将保存在此矩形中

代码语言:javascript
复制
Rect textBounds = new Rect();

int startIndex = spannableString.length() - 4; //length of your last word as start and end indices.
int endIndex = spannableString.length();
mTextPaint.getTextBounds(spannableString, startIndex, endIndex, textBounds); 

int height = textBounds.height();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31840986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档