Android TextView 嵌套图片及其点击,TextView 部分文字点击

时间:2014-03-19 20:17:22   收藏:0   阅读:1451

1. TextView 中嵌套图片的方法

bubuko.com,布布扣
TextView textView...
textView.setText("...");
textView.append(Html.fromHtml("<imgsrc=‘"+R.drawable.question+"‘/>",imageGetter, new MTagHandler(context)));
bubuko.com,布布扣

就是在 TextView 中加入包含图片的 html 代码。

Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)

 

2. TextView 中嵌套图片的点击响应

ImageGetter 的实现:

bubuko.com,布布扣
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; 
        } 
};
bubuko.com,布布扣

 

TagHandler 的实现:

bubuko.com,布布扣
    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();
            }
        }
    }
bubuko.com,布布扣

碰到 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

bubuko.com,布布扣
spannableString.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        // TODO Auto-generated method stub
        // 要做的事写在这里
    }
},0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
bubuko.com,布布扣

  然后把 TextView 的文字内容设置为 SpannbleString:

    textView.setText(spannableString);

 

一篇不错的写 SpannbleString 的文章:

http://ezfantasy.iteye.com/blog/1468631

Android TextView 嵌套图片及其点击,TextView 部分文字点击,布布扣,bubuko.com

原文:http://www.cnblogs.com/davesuen/p/3612181.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!