Android如何在TextView中添加图片?

21

我是第一次在这里发帖:) 我一直在寻找这个答案,但一直没有找到。 我的需求是在一段文本中插入一张图片,然后再接着显示其余的文字。举个例子:

                             ____
                            |   |
Hi there, this is the photo |___|, hope you like it..

我一直在寻找如何将图像添加到文本中,但所有我找到的内容都是将文本添加到图像或将图像添加到图像视图,我认为这不是我想要的,因为应用程序主要是文本,但其中有图像。

所以我的问题是:如何将图像添加到文本中?

谢谢


更新: 我使用了R.daneel.olivaw给我的建议,它很好用=)

但是我有一个问题。假设我有:"a b c",我将b的位置设置为可跨度的。但是如果我尝试删除文本并删除b,则下一次写入时它将变成我在跨度中使用的图像。我该怎么办?有人有什么建议吗? 谢谢=)

5个回答

26

我认为您正在寻找Spannable接口,通过使用它,您可以向文本视图添加图像。

这个链接可能会有所帮助。

输入图像描述


这似乎有效。太棒了,我会继续尝试并看看它是否符合我的要求=) - user1162299
你好,这对你有用吗? - R.daneel.olivaw
是的,完全有效。谢谢。但我有一个问题。 假设我有:"a b c",其中我将b的位置设置为可跨度。但是,如果我尝试删除文本并删除b,则下一次写入内容时它将变成我在可跨度中使用的图像。我该如何纠正这个问题? - user1162299
new ImageSpan( smiley ) 已经过时了,顺便提一下(在这个答案中链接的文章)。 - basickarl
谢谢@VickyS,链接已修复。 - R.daneel.olivaw

2

您最好的选择是创建自己的视图,并使用canvas.drawText()方法为文本覆盖onDraw()方法,使用canvas.drawBitmap()方法为图像覆盖。

请参阅Canvas文档:http://developer.android.com/reference/android/graphics/Canvas.html

以下是一个在屏幕中央绘制一些文本的示例:

public class OverlayView extends View {

public OverlayView(final Context context) {
    super(context);
}

/**
 * Draw camera target.
 */
@Override
protected void onDraw(final Canvas canvas) {

    // view size
    int width = getWidth();
    int height = getHeight();

    float square_side = height - width * 0.8f; // size of the target square

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setStyle(Paint.Style.FILL);

    // text size is 5% of the screen height
    paint.setTextSize(height * 0.05f);

    // draw message depending of its width
    String message = getResources().getString(R.string.photo_target_text);

    float message_width = paint.measureText(message);

    paint.setColor(getResources().getColor(R.color.color_foreground));
    canvas.drawText(message, (width - message_width) / 2,
            (height - square_side) / 4, paint);

    super.onDraw(canvas);
}

}

0
< string name="text" > "Hi there, this is the photo [img src=img.jpge/] , hope you like it. < / string>

将此代码添加到您的字符串中,它就可以正常工作了。

0
据我所知,没有办法做到这一点。
但是当您使用Webview和生成的HTML时,您可以做类似的事情。
从您的内容生成HTML,并将其加载到Webview中,将Webview设置为无缩放控件。

0

可以使用图片获取器完成此操作: Html.ImageGetter

您需要为每个图像使用HTML标记。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接