当前位置: 移动技术网 > IT编程>移动开发>Android > 利用SpannableString和ImageSpan在textview中插入图片的方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

战争的真相修改器,2017体操世锦赛,商会芳

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

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

先上效果图:

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);
      }
    });
  }
}

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网