TextView textView... textView.setText("..."); textView.append(Html.fromHtml("<imgsrc=‘"+R.drawable.question+"‘/>",imageGetter, new MTagHandler(context)));
就是在 TextView 中加入包含图片的 html 代码。
Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)
ImageGetter 的实现:
ImageGetter imageGetter = new ImageGetter() { @Override public Drawable getDrawable(String source) { int id = Integer.parseInt(source); Drawable drawable = context.getResources().getDrawable(id); drawable.setBounds(int left, int top, int right, int bottom); return drawable; } };
TagHandler 的实现:
public class MTagHandler implements TagHandler { private int sIndex = 0; private int eIndex = 0; private final Context mContext; public MTagHandler(Context context) { mContext = context; } public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) { // TODO Auto-generated method stub if (tag.toLowerCase().equals("img")) { if (opening) { sIndex = output.length(); } else { eIndex = output.length(); output.setSpan(new MSpan(), sIndex, eIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } } private class MSpan extends ClickableSpan implements OnClickListener { @Override public void onClick(View widget) { // TODO Auto-generated method stub Log.e("test", "aaaaaaaaaaaa"); Toast.makeText(context, "sdfdsfsdfdsf", 1000).show(); } } }
碰到 img 标签后做 onClick 里的响应处理。
3. TextView 中部分文字的点击相应:
这里需要使用 SpannableString(不可变) 或 SpannableStringBuilder(可变)。
首先,创建一个 SpannbleString:
SpannableString spannableString = new SpannableString("xxxx");
spannableString.setSpan(Object what, int start, int end, int flags);
Object what 这里放一个 ClickableSpan,并实现它的 onClick 方法用于点击相应。
int start,int end 定义字符串的区间。
int flags 表示样式。在 Spanned 类中有很多参数可供使用。常用的是 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
spannableString.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { // TODO Auto-generated method stub // 要做的事写在这里 } },0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
然后把 TextView 的文字内容设置为 SpannbleString:
textView.setText(spannableString);
一篇不错的写 SpannbleString 的文章:
http://ezfantasy.iteye.com/blog/1468631
Android TextView 嵌套图片及其点击,TextView 部分文字点击,布布扣,bubuko.com
Android TextView 嵌套图片及其点击,TextView 部分文字点击
原文:http://www.cnblogs.com/davesuen/p/3612181.html