欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

利用SpannableString和ImageSpan在textview中插入图片的方法

程序员文章站 2022-06-04 10:44:33
默认的textview是无法显示图片的。所以想要实现这个功能得需要我们自己为其添加一个方法。 在这里我们采用spannablestring和imagespan两个类来实现...

默认的textview是无法显示图片的。所以想要实现这个功能得需要我们自己为其添加一个方法。

在这里我们采用spannablestring和imagespan两个类来实现这一功能。

先上效果图:

利用SpannableString和ImageSpan在textview中插入图片的方法

main.xml布局文件。我们使用自己定义的edittext

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <easy.stu.mytextview
    android:id="@+id/mytext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
  <button
    android:id="@+id/mybutton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="insert" />
</linearlayout>

myedittext.java

package easy.stu;
import android.content.context;
import android.graphics.drawable.drawable;
import android.text.spannable;
import android.text.spannablestring;
import android.text.style.imagespan;
import android.util.attributeset;
import android.widget.edittext;
public class mytextview extends textview {
  public mytextview(context context) {
    super(context);
  }
  public mytextview(context context, attributeset attrs) {
    super(context, attrs);
  }
  public void insertdrawable(int id) {
    final spannablestring ss = new spannablestring("easy");
    //得到drawable对象,即所要插入的图片
    drawable d = getresources().getdrawable(id);
    d.setbounds(0, 0, d.getintrinsicwidth(), d.getintrinsicheight());
    //用这个drawable对象代替字符串easy
    imagespan span = new imagespan(d, imagespan.align_baseline);
    //包括0但是不包括"easy".length()即:4。[0,4)。值得注意的是当我们复制这个图片的时候,实际是复制了"easy"这个字符串。
    ss.setspan(span, 0, "easy".length(), spannable.span_inclusive_exclusive);
    append(ss);
  }
}

myactivity.java

package easy.stu;
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
public class myactivity extends activity {
  /** called when the activity is first created. */
  button b;
  myedittext e;
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    b = (button) findviewbyid(r.id.mybutton);
    e = (mytextview) findviewbyid(r.id.mytext);
    b.setonclicklistener(new onclicklistener() {
      public void onclick(view v) {
        e.insertdrawable(r.drawable.easy);
      }
    });
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。