首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使ImageSpan适应TextView线条高度

使ImageSpan适应TextView线条高度
EN

Stack Overflow用户
提问于 2013-10-24 21:22:53
回答 2查看 12.9K关注 0票数 27

我需要在我的文本视图中放置一些图标,但是它们不适合线条高度(看看箭头):

我试过这个:

代码语言:javascript
复制
spannable.setSpan(new ImageSpan(context, entry.getValue(), ImageSpan.ALIGN_BOTTOM), Matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);

还有这个:

代码语言:javascript
复制
    Drawable myIcon = c.getResources().getDrawable(R.drawable.myicon);
    myIcon.setBounds(0, 0, myIcon.getIntrinsicWidth(), myIcon.getIntrinsicHeight());
    spannable.setSpan(new ImageSpan(myIcon, ImageSpan.ALIGN_BASELINE), matcher.start(), matcher.end(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
t.setText(spannable, BufferType.SPANNABLE);

在这两种情况下,我得到了相同的结果。

我将图标保存在/res/drawable文件夹中,它的大小是75x75px。我试着降低图像分辨率,但它们看起来很模糊。

EN

回答 2

Stack Overflow用户

发布于 2014-03-06 21:47:18

您需要将图像的边界设置为TextView的行高。例如:

代码语言:javascript
复制
myIcon.setBounds(0, 0, t.getLineHeight(),t.getLineHeight());

当然,这假设您想要一个正方形的图像。如果不是正方形,则需要手动确定宽度值应基于线条高度。

票数 31
EN

Stack Overflow用户

发布于 2016-04-29 18:16:43

要实现包含到文本视图中的绘制内容的正确高度,您应该设置它们的适当边界。但首先,我们必须正确地计算它们。尤其是它的高度。

经过一些实验,我意识到Paint类中的FontMetricsInt字段可能会很有用。

代码语言:javascript
复制
Paint textPaint = new Paint();
//obviously, we have to set textSize into Paint object
textPaint.setTextSize(textSize);
FontMetricsInt fontMetrics = textPaint.getFontMetricsInt();
setBounds(
        0,
        fontMetrics.ascent,
        widthForDrawable,
        fontMetrics.bottom
);

因此,使用FontMetricsIntascent值和底部的bottom值对齐图像的顶部。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19567220

复制
相关文章

相似问题

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