给TextView设置图片的两种实现方法

来源:互联网 发布:三生网络直销平台 编辑:程序博客网 时间:2024/05/17 02:06

    有时在开发过程中,我们会有在TextView中添加图片的需求(比如下图箭头所指文字中的表情)。而在xml中对Textview进行属性设置时,只能设置图片在TextView的左、右、上、下四个位置,不能添加到中间的某个位置,这就要求我们在编写代码时动态的进行相关操作了。


    这里就给出两种解决方法:

    1,使用SpannableString/SpannableStringBuilder;具体使用方法如下:

        1)构造String     

    SpannableString spanString = new SpannableString("好厉害的魔术啊,小姑娘。。。");
        2),构造Span
    Drawable d = getResources().getDrawable(R.drawable.doraemon);       d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());     ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 

        3),利用SetSpan()对指定范围的String应用这个Span    

    <span style="font-size:14px;">spanString.setSpan(span, 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);        textView.setText(spanString);  </span>
    方法一完成,同时要说的是,SpannableString可以用来给字体设置各种效果,例如不同颜色,下划线,粗体/黑体字,背景色等等。

    2,使用Html.fromHtml方法来设置图片

/** * 项目资源图片 * @author Susie */private final class ProImageGetter implements Html.ImageGetter{  @Override  public Drawable getDrawable(String source) {    // 获取到资源id    int id = Integer.parseInt(source);    Drawable drawable = getResources().getDrawable(id);    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());    return drawable;  }}

  String html = "好厉害的魔术" + "<img src=""+R.drawable.doraemon+"">"+",小姑娘。。。";  textView.setText(Html.fromHtml(html, new ProImageGetter(), null));
    方法二至此也已完成,此方法主要是通过对Html的ImageGetter参数进行自定义来设置图片的。

    其实方法一也好,方法二也好,Drawable的获取既可以来自网络,也可以来自存储空间,或者程序自带,是具体情况而定。


参考资料:1,http://blog.csdn.net/harvic880925/article/details/38984705

                  2,http://blog.csdn.net/u010418593/article/details/9324101

0 0
原创粉丝点击