利用SpannableString和ImageSpan在textview中插入图片的方法
程序员文章站
2023-11-13 13:45:04
默认的textview是无法显示图片的。所以想要实现这个功能得需要我们自己为其添加一个方法。
在这里我们采用spannablestring和imagespan两个类来实现...
默认的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); } }); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 关于app的缺省数据设计分析