首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于TextView和StaticLayout的ImageSpan尺寸测量

基于TextView和StaticLayout的ImageSpan尺寸测量
EN

Stack Overflow用户
提问于 2017-01-02 14:49:44
回答 0查看 1.4K关注 0票数 0

我有一个只包含一个TextView的简单布局。

我想使用ImageSpan将图像加载到TextView中。

下面的方法创建Spannable

代码语言:javascript
复制
private Spannable getImageSpannable(int drawableId, int targetWidth, int targetHeight) {

    Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), drawableId);

    Bitmap bitmap = Bitmap.createScaledBitmap(originalBitmap, targetWidth, targetHeight, true);
    Drawable dr = new BitmapDrawable(getResources(), bitmap);
    dr.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());

    Spannable imageSpannable = new SpannableString("\uFFFC");
    ImageSpan imgSpan = new ImageSpan(dr, DynamicDrawableSpan.ALIGN_BOTTOM);

    imageSpannable.setSpan(imgSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return imageSpannable;
}

我使用此方法创建内容,如下所示:

代码语言:javascript
复制
public void setContent() {

    SpannableStringBuilder content = new SpannableStringBuilder();
    content.append(getImageSpannable(R.drawable.my_image, 100, 260));
    content.append("\n");

    txtContent.setText(content);
}

当我调用setContent()方法时,我的结果类似于:

正如你所看到的,在ImageSpan和TextView的顶部之间有一个很小的差距。

这不是行距,因为我将行距设置为0。

有趣的是,当我从内容中删除"\n“(在setContent方法中声明)时,这个空间就消失了。

另一点是,当我尝试使用StaticLayout测量内容大小时,在第0行的末尾使用"\n“,它返回270,如果不使用"\n”,它将返回260。

这种行为给我带来了一些困难,因为我必须使用StaticLayout测量文本和ImageSpan,并决定哪一个可以适合TextView

我很感谢大家能帮助我。

谢谢。

下面是我的xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:id="@+id/txtContent"
    android:layout_width="300dp"
    android:layout_height="500dp"
    android:background="#fed9f4"
    android:textSize="22sp"/>
</LinearLayout>

我做了一些测试,我发现字体大小会影响ImageSpan渲染。

有没有人能解释一下这种影响?

EN

回答

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

https://stackoverflow.com/questions/41422461

复制
相关文章

相似问题

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